3 Replies Latest reply on Dec 7, 2010 10:42 AM by wdarby

    dynamic endpoint

    alex.rs

      Hi everyone!

       

      Please help!

      I managed to make a BPEL process that starts with receiving a parameter, then invoking a webservice that returns a wsdl url according to this parameter. Next I need to invoke the webservice who's wsdl was returned on previous step. So, my wsdl url is dynamic.

      How to assign the returned wsdl url to webservice invokation?  How is it possible to invoke a webservice with dynamic endpoint?

      I tried to assign the received wsdl url to partnerlink of invoked webservice, but it didn't work. Guess it is needed to do some more things...

      Could you give me an example? I found some on Apache ODE site, but it didn't work.

       

      I'm using BPEL Designer in Eclipse

       

      Thanks!

        • 1. Re: dynamic endpoint
          objectiser

          Hi Alex

           

          Riftsaw does not have such an example. Are you saying that you have tried the DynPartner example from the Apache ODE project, and it does not work in RiftSaw?

           

          It might be a bug, so if you know the example works fine in Apache ODE 1.3.4, but not in RiftSaw, then can you raise a bug in the riftsaw jira attaching the relevant example (or referencing it if the Apache ODE one) and including info on the riftsaw/jbossas/esb version you are using and environment details?

           

          Regards

          Gary

          • 2. Re: dynamic endpoint
            wdarby

            Any luck with this?

            I've directly adapted the ODE example to my simple test case and can't get this to work. Specifically, I use the  'Simple URL without wrapper' option discussed here: http://ode.apache.org/endpoint-references.html and used in the DynPartner sample, and get this error when the WSDL SOAP location does not match the statically assigned address:

             

            18:26:32,954 ERROR [DispatchImpl] Cannot dispatch message
            java.io.IOException: Could not transmit message
                    at org.jboss.ws.core.client.transport.NettyClient.invokeInternal(NettyClient.java:229)

            ...

            Caused by: java.io.IOException: Could not transmit message
                    at org.jboss.ws.core.client.transport.NettyClient.invokeInternal(NettyClient.java:229)

            ...

            Caused by: org.jboss.ws.WSException: Invalid HTTP server response [404] - Not Found
                    at org.jboss.ws.core.soap.SOAPMessageUnMarshallerHTTP.read(SOAPMessageUnMarshallerHTTP.java:75)

             

            Also, when I try copying the original endpoint ref (which appears legal according to the BPEL spec) with:

            <bpel:copy>

              <bpel:from partnerLink="responderPartnerLink" endpointReference="partnerRole"/>

              <bpel:to variable="epRef"/>

            </bpel:copy>

             

            I get a long string of exceptions starting with:

            18:35:50,479 ERROR [JacobVPU] Method "run" in class "org.apache.ode.bpel.runtime.ASSIGN" threw an unexpected exception.
            java.lang.NullPointerException
                    at org.apache.ode.bpel.epr.URLEndpoint.accept(URLEndpoint.java:54)
                    at org.apache.ode.bpel.epr.EndpointFactory.createEndpoint(EndpointFactory.java:62)
                    at org.apache.ode.bpel.epr.EndpointFactory.convert(EndpointFactory.java:92)
                    at org.jboss.soa.bpel.runtime.engine.ode.EndpointReferenceContextImpl.convertEndpoint(EndpointReferenceContextImpl.java:48)
                    at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.convertEndpointReference(BpelRuntimeContextImpl.java:494)
                    at org.apache.ode.bpel.runtime.ASSIGN.copy(ASSIGN.java:430)
                    at org.apache.ode.bpel.runtime.ASSIGN.run(ASSIGN.java:86)
            ...

            18:35:50,484 ERROR [BpelEngineImpl] Scheduled job failed; jobDetail=JobDetails( instanceId: null mexId: hqejbhcnphr5t6osf154pd processId: {http://cpc.com/safariview/bpel}Converged-0 type: INVOKE_INTERNAL channel: null correlatorId: null correlationKeySet: null retryCount: null inMem: false detailsExt: {})
            java.lang.RuntimeException: java.lang.NullPointerException
                    at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:464)
                    at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139)
                    at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:959)
                    at org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeNewInstance(PartnerLinkMyRoleImpl.java:208)

            I'm going to start trying this with OSE in Tomcat next.

            • 3. Re: dynamic endpoint
              wdarby

              Sure enough, both of these behaviors work fine in ODE running on Tomcat. I'm going to write up Jira issues for each separately. Dynamic endpoints are a critical capability for my application.