For example, if ProcessA is calling ProcessB, we need to change reference of ProcessB.
ProcessA : composite.xml
<reference name="ProcessB" ui:wsdlLocation="PROCESS-B-ABSTRACT-WSDL">
<interface.wsdl interface="http://xmlns.oracle.com/TokenTesting/ProjectB/BPELProcessB#wsdl.interface(BPELProcessB)"/>
<binding.ws port="http://xmlns.oracle.com/TokenTesting/ProjectB/BPELProcessB#wsdl.endpoint(bpelprocessb_client_ep/BPELProcessB_pt)"
location="PROCESS-B-RUNTIME-WSDL-WITH-BINDINGS" soapVersion="1.1">
<property name="weblogic.wsee.wsat.transaction.flowOption" type="xs:string" many="false">WSDLDriven</property>
</binding.ws>
</reference>
Process A : componentType
<reference name="ProcessB" ui:wsdlLocation="PROCESS-B-ABSTRACT-WSDL">
<interface.wsdl interface="http://xmlns.oracle.com/TokenTesting/ProjectB/BPELProcessB#wsdl.interface(BPELProcessB)"/>
</reference>
We decided to keep ProcessB runtime WSDL file along with bindings (which you can get from EM console) to MDS, so reference looked like this.
ProcessA : composite.xml
<reference name="ProcessB" ui:wsdlLocation="oramds:/apps/processb/processb.wsdl">
<interface.wsdl interface="http://xmlns.oracle.com/TokenTesting/ProjectB/BPELProcessB#wsdl.interface(BPELProcessB)"/>
<binding.ws port="http://xmlns.oracle.com/TokenTesting/ProjectB/BPELProcessB#wsdl.endpoint(bpelprocessb_client_ep/BPELProcessB_pt)"
location="oramds:/apps/processb/processb.wsdl" soapVersion="1.1">
<property name="weblogic.wsee.wsat.transaction.flowOption" type="xs:string" many="false">WSDLDriven</property>
</binding.ws>
</reference>
Process A : componentType
<reference name="ProcessB" ui:wsdlLocation="oramds:/apps/processb/processb.wsdl">
<interface.wsdl interface="http://xmlns.oracle.com/TokenTesting/ProjectB/BPELProcessB#wsdl.interface(BPELProcessB)"/>
</reference>
Once that is done, you can either have valid runtime endpoint URL in , or dynamic endpoint URL by reading it from config file (for AIA it is OOTB but it can be done in pure SOA as well).
Errors
We faced different errors while working on this.
1. Null Pointer Exception:
Jdeveloper shows warning during compilation:
ProjectA\composite.xml:30: warning: Failed to Find Binding "ProcessB":
"{http://xmlns.oracle.com/TokenTesting/ProjectB/BPELProcessB}BPELProcessB_pt" in WSDL Manager
While executing from EM, it shows following error:
java.lang.NullPointerException
at java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:1058)
at oracle.integration.platform.blocks.soap.AbstractWebServiceBindingComponent.dispatchRequest(AbstractWebServiceBindingComponent.java:521)
at oracle.integration.platform.blocks.soap.WebServiceExternalBindingComponent.processOutboundMessage(WebServiceExternalBindingComponent.java:287)
at oracle.integration.platform.blocks.soap.WebServiceExternalBindingComponent.sendSOAPMessage(WebServiceExternalBindingComponent.java:1191)
at oracle.integration.platform.blocks.soap.WebServiceExternalBindingComponent.request(WebServiceExternalBindingComponent.java:785)
at oracle.integration.platform.blocks.mesh.SynchronousMessageHandler.doRequest(SynchronousMessageHandler.java:139)
at oracle.integration.platform.blocks.mesh.MessageRouter.request(MessageRouter.java:182)
at oracle.integration.platform.blocks.mesh.MeshImpl.request(MeshImpl.java:190)
at sun.reflect.GeneratedMethodAccessor3438.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at oracle.integration.platform.metrics.PhaseEventAspect.invoke(PhaseEventAspect.java:71)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy361.request(Unknown Source)
at oracle.fabric.CubeServiceEngine.requestToMesh(CubeServiceEngine.java:858)
at com.collaxa.cube.ws.WSInvocationManager.invoke(WSInvocationManager.java:267)
at com.collaxa.cube.engine.ext.common.InvokeHandler.__invoke(InvokeHandler.java:1099)
at com.collaxa.cube.engine.ext.common.InvokeHandler.handleNormalInvoke(InvokeHandler.java:594)
at com.collaxa.cube.engine.ext.common.InvokeHandler.handle(InvokeHandler.java:132)
at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:74)
at com.collaxa.cube.engine.ext.bpel.common.wmp.BaseBPELActivityWMP.perform(BaseBPELActivityWMP.java:173)
at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:2718)
at com.collaxa.cube.engine.CubeEngine._handleWorkItem(CubeEngine.java:1197)
at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1100)
at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:76)
at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:251)
at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:330)
at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4652)
at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4583)
at com.collaxa.cube.engine.CubeEngine._createAndInvoke(CubeEngine.java:714)
at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:559)
at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.createAndInvoke(CubeEngineBean.java:103)
at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.syncCreateAndInvoke(CubeEngineBean.java:145)
at com.collaxa.cube.engine.ejb.impl.bpel.BPELEngineBean.syncCreateAndInvoke(BPELEngineBean.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
OR
java.lang.NullPointerException
at oracle.integration.platform.blocks.soap.WebServiceExternalBindingComponent.getInvocationMetadata(WebServiceExternalBindingComponent.java:928)
at oracle.integration.platform.blocks.soap.WebServiceExternalBindingComponent.request(WebServiceExternalBindingComponent.java:530)
at oracle.integration.platform.blocks.mesh.SynchronousMessageHandler.doRequest(SynchronousMessageHandler.java:139)
at oracle.integration.platform.blocks.mesh.MessageRouter.request(MessageRouter.java:179)
at oracle.integration.platform.blocks.mesh.MeshImpl.request(MeshImpl.java:155)
at sun.reflect.GeneratedMethodAccessor4746.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at oracle.integration.platform.metrics.PhaseEventAspect.invoke(PhaseEventAspect.java:71)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy348.request(Unknown Source)
at oracle.fabric.CubeServiceEngine.requestToMesh(CubeServiceEngine.java:824)
at com.collaxa.cube.ws.WSInvocationManager.invoke(WSInvocationManager.java:263)
at com.collaxa.cube.engine.ext.common.InvokeHandler.__invoke(InvokeHandler.java:1056)
at com.collaxa.cube.engine.ext.common.InvokeHandler.handleNormalInvoke(InvokeHandler.java:583)
at com.collaxa.cube.engine.ext.common.InvokeHandler.handle(InvokeHandler.java:130)
at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:75)
at com.collaxa.cube.engine.ext.bpel.common.wmp.BaseBPELActivityWMP.perform(BaseBPELActivityWMP.java:158)
at com.collaxa.cube.engine.CubeEngine._performActivity(CubeEngine.java:2463)
at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:2334)
at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1116)
at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:73)
at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:220)
at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:328)
at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4350)
at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4282)
at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:679)
at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.createAndInvoke(CubeEngineBean.java:103)
at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.syncCreateAndInvokeParticipate(CubeEngineBean.java:181)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
Solution: Make sure runtime WSDL is updated in referred in binding section. If it is abstract WSDL, it will throw this error message.
2. Transport can not be determined from uri REPLACE_WITH_ACTUAL_URL
oracle.fabric.common.FabricInvocationException: Unable to invoke endpoint URI "REPLACE_WITH_ACTUAL_URL" successfully
due to: java.lang.IllegalArgumentException: Transport can not be determined from uri REPLACE_WITH_ACTUAL_URL
Please make sure you have added soapVersion="XYZ" and weblogic.wsee.wsat.transaction.flowOption, which usually gets removed when you hand edit composite.xml or upgrade it from 10g to 11g.
<reference name="ProcessB" ui:wsdlLocation="PROCESS-B-ABSTRACT-WSDL">
<interface.wsdl interface="http://xmlns.oracle.com/TokenTesting/ProjectB/BPELProcessB#wsdl.interface(BPELProcessB)"/>
<binding.ws port="http://xmlns.oracle.com/TokenTesting/ProjectB/BPELProcessB#wsdl.endpoint(bpelprocessb_client_ep/BPELProcessB_pt)"
location="PROCESS-B-RUNTIME-WSDL-WITH-BINDINGS" soapVersion="1.1">
<property name="weblogic.wsee.wsat.transaction.flowOption" type="xs:string" many="false">WSDLDriven</property>
</binding.ws>
</reference>
2 comments:
for me I had to remove the
callbackInterface after migration from 10g.
<interface.wsdl callbackInterface="..."
interface="...
umm, ok. was it a sync process?
Post a Comment