Invoking one service after another causing exception in jbpm
jiehuan_li Jun 23, 2006 2:17 PMI deployed 2 JSR 181 web services, and I am trying to use jbpm bpel to orchestrate the 2 web services. Both web services accept an input string and return it as the output, and they are individually tested and working fine. Below is my .bpel content:
<partnerLinks> <partnerLink name="jbpmbpelRelation" partnerLinkType="tns:jbpmbpel-front" myRole="frontEnd" /> <partnerLink name="svcRelation" partnerLinkType="tns:front-svc" partnerRole="svcRole" /> <partnerLink name="svc2Relation" partnerLinkType="tns:front-svc2" partnerRole="svc2Role" /> </partnerLinks> <variables> <variable name="connectReq" messageType="jbpmbpel:jbpmbpelInputMessage" /> <variable name="connectResp" messageType="jbpmbpel:jbpmbpelOutputMessage" /> <variable name="svcReq" messageType="svc:EndpointInterface_echo" /> <variable name="svc2Req" messageType="svc2:EndpointInterface2_echo2" /> <variable name="svcOutputMsg" messageType="svc:EndpointInterface_echoResponse" /> <variable name="svc2OutputMsg" messageType="svc2:EndpointInterface2_echo2Response" /> </variables> <sequence name="mainSequence"> <receive operation="connect" partnerLink="jbpmbpelRelation" portType="jbpmbpel:jbpmbpelFrontEnd" variable="connectReq" createInstance="yes" /> <assign name="connectionStart"> <copy> <from variable="connectReq" part="request" /> <to variable="svcReq" part="String_1" /> </copy> </assign> <invoke operation="echo" partnerLink="svcRelation" portType="svc:EndpointInterface" inputVariable="svcReq" outputVariable="svcOutputMsg" /> <assign name="connectionBetween"> <copy> <from variable="svcOutputMsg" part="result" /> <to variable="svc2Req" part="String_1" /> </copy> </assign> <invoke operation="echo2" partnerLink="svc2Relation" portType="svc2:EndpointInterface2" inputVariable="svc2Req" outputVariable="svc2OutputMsg" /> <assign name="connectionEnd"> <copy> <from variable="svc2OutputMsg" part="result" /> <to variable="connectResp" part="result" /> </copy> </assign> <reply operation="connect" partnerLink="jbpmbpelRelation" portType="jbpmbpel:jbpmbpelFrontEnd" variable="connectResp" /> </sequence>
As you can see, the process accept an input string, hands it over to the first service, then the output of the first service is fed into the second service, and the output of the second service will be returned to the caller. For some reason I am getting the following exception when I am testing the bpel service:
13:46:39,152 ERROR [StartListener] could not start process instance java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor262.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:208) at org.jbpm.bpel.def.Receive_$$_javassist_24.accept(Receive_$$_javassist_24.java) at org.jbpm.bpel.def.ProcessInstanceStarter.visit(ProcessInstanceStarter.java:82) at org.jbpm.bpel.def.Sequence.accept(Sequence.java:84) at org.jbpm.bpel.def.ProcessInstanceStarter.visit(ProcessInstanceStarter.java:29) at org.jbpm.bpel.def.BpelDefinition.messageReceived(BpelDefinition.java:110) at org.jbpm.bpel.relation.jms.StartListener.onMessage(StartListener.java:94) at org.jboss.mq.SpyMessageConsumer.run(SpyMessageConsumer.java:694) at java.lang.Thread.run(Thread.java:595) Caused by: org.jbpm.graph.def.DelegationException at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:349) at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:343) at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:343) at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:343) at org.jbpm.bpel.def.Activity.enter(Activity.java:88) at org.jbpm.graph.def.Transition.take(Transition.java:119) at org.jbpm.graph.def.Node.leave(Node.java:382) at org.jbpm.bpel.def.Activity.leave(Activity.java:148) at org.jbpm.bpel.def.ProcessInstanceStarter.visit(ProcessInstanceStarter.java:43) at org.jbpm.bpel.def.Receive.accept(Receive.java:64) ... 12 more Caused by: org.jbpm.graph.def.DelegationException at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:349) at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:343) at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:343) at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:343) at org.jbpm.bpel.def.Activity.enter(Activity.java:88) at org.jbpm.graph.def.Transition.take(Transition.java:119) at org.jbpm.graph.def.Node.leave(Node.java:382) at org.jbpm.bpel.def.Activity.leave(Activity.java:148) at org.jbpm.bpel.def.Assign.execute(Assign.java:41) at org.jbpm.bpel.def.Activity.enter(Activity.java:83) ... 17 more Caused by: org.jbpm.graph.def.DelegationException at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:349) at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:343) at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:343) at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:343) at org.jbpm.bpel.def.Activity.enter(Activity.java:88) at org.jbpm.graph.def.Transition.take(Transition.java:119) at org.jbpm.graph.def.Node.leave(Node.java:382) at org.jbpm.bpel.def.Activity.leave(Activity.java:148) at org.jbpm.bpel.def.Invoke.execute(Invoke.java:29) at org.jbpm.bpel.def.Activity.enter(Activity.java:83) ... 22 more Caused by: org.jbpm.graph.def.DelegationException at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:349) at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:343) at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:343) at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:343) at org.jbpm.bpel.def.Activity.enter(Activity.java:88) at org.jbpm.graph.def.Transition.take(Transition.java:119) at org.jbpm.graph.def.Node.leave(Node.java:382) at org.jbpm.bpel.def.Activity.leave(Activity.java:148) at org.jbpm.bpel.def.Assign.execute(Assign.java:41) at org.jbpm.bpel.def.Activity.enter(Activity.java:83) ... 27 more Caused by: java.lang.NullPointerException at org.jbpm.bpel.service.consumer.PortConsumer.writeMessage(PortConsumer.java:154) at org.jbpm.bpel.service.consumer.PortConsumer.callImpl(PortConsumer.java:127) at org.jbpm.bpel.service.consumer.PortConsumer.call(PortConsumer.java:96) at org.jbpm.bpel.relation.jms.JmsRelationService.invoke(JmsRelationService.java:143) at org.jbpm.bpel.def.Invoke.execute(Invoke.java:28) at org.jbpm.bpel.def.Activity.enter(Activity.java:83) ... 32 more
If I remove any one of the two 'invoke' in the .bpel file and make it only in and out of one service, everything works fine.
What did I miss? Any help would be highly appreciated!
Jiehuan