ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matthieu Riou" <matth...@offthelip.org>
Subject Re: Problem with Assign or Invoke
Date Tue, 02 Sep 2008 17:16:54 GMT
On Tue, Sep 2, 2008 at 6:10 AM, Philippe Allart <pallart@cudl-lille.fr>wrote:

> Hi,
>
> I'm still with my experience of integration of PHP and ODE, and I'm closed
> to complete.
>
> I can send with PHP a one-way request to ODE with some callback
> information. ODE can recognize the EPR and the sessionId.
>
> Then, after some (successful) assign, ODE send a one-way request to another
> PHP script, which can read the message and send it by mail to me. This
> script take into acount the callback information sent by ODE
> (<callback><Adresse>...</Adress><session>...<session></callback).
>
> Then, by clicking on a link in the message I received, I lauch another PHP
> script which picks up the callback received from ODE and send back a request
> to the process.
>
> ODE receives the request, makes an implicite correlation and wakes up the
> right instance. I can see my sessionID in the log.
>
> Then it has to do  an Assign to initialize the response toward  the initial
> "client", which I implemented once again as a PHP WS.
>
> The endpoint used by ODE is correct.
>
> But at this point, ODE falls in error. You'll find below a part of the log.
>
> It seems that the error occurs in the function "InvokePartner"  which,
> according to svn, has been replaced by the functions "InvokeReliablePartner"
> and "InvokeUnreliablePartner" one year ago, but may be that does'nt matter.
>

Which version of ODE are you using? If you're using a release the code is
probably closer to our 1.X branch (the trunk is still unreleased):

http://svn.apache.org/repos/asf/ode/branches/APACHE_ODE_1.X/


>
> The exception is "java.lang.NullPointerException", thus I suspect something
> is wrong in the preceding Assign. I've learnt that this kind of step is a
> little bit sensible.


Yeah I'm a bit surprised this isn't caught before. From the line numbers (if
they match) it seems the service hasn't been deployed in the IL. It's
probably that you're missing an <invoke partnerLink="..."> block in your
deployment descriptor.

Matthieu


>
>
> While ODE should call the PHP WS, nothing appears in the access.log of
> http. Thus the error occurs before the invocation.
>
> Here's the log:
>
>
> ---------------------------------------------------------------------------------------------------------
> DEBUG - GeronimoLog.debug(66) | >> handleWorkEvent(jobData={final=true,
> mexid=hqejbhcnphr3k60kw2ielr, pid={
> http://sample.bpel.org/bpel/sample}ValidationProcess-76<http://sample.bpel.org/bpel/sample%7DValidationProcess-76>,
> retry=3, type=INVOKE_INTERNAL})
> DEBUG - GeronimoLog.debug(66) | InvokeInternal event for mexid
> hqejbhcnphr3k60kw2ielr
> DEBUG - GeronimoLog.debug(66) | GET MEX property
> org.apache.ode.bpel.myRoleSessionId = hqejbhcnphr3k60kw2ieln
> DEBUG - GeronimoLog.debug(66) | GET MEX property
> org.apache.ode.bpel.myRoleSessionId = hqejbhcnphr3k60kw2ieln
> DEBUG - GeronimoLog.debug(66) | GET MEX property
> org.apache.ode.bpel.partnerRoleSessionId = null
> DEBUG - GeronimoLog.debug(66) | INPUTMSG: 26.callback: MSG RCVD
> keys=[{CorrelationKey setId=-1, values=[hqejbhcnphr3k60kw2ieln]}]
> mySessionId=hqejbhcnphr3k60kw2ieln partnerSessionId=null
> DEBUG - GeronimoLog.debug(66) | INPUTMSG: 26.callback: ckey {CorrelationKey
> setId=-1, values=[hqejbhcnphr3k60kw2ieln]} route is to
> org.apache.ode.dao.jpa.MessageRouteDAOImpl@41cb3
> DEBUG - GeronimoLog.debug(66) | INPUTMSG: 26.callback: ROUTING to instance
> 10962
> DEBUG - GeronimoLog.debug(66) | BpelRuntimeContextImpl created for instance
> 10962. INDEXED STATE={{OScope '__PROCESS_SCOPE:ValidationProcess'
> id=3}::0=[ACTIVE(...)],
> OPickReceive#42-ReceptionChoix::13=[ACTIVITYGUARD(...)],
> OSequence#27-Notification::2=[SEQUENCE(self=(OSequence#27-Notification,TerminationChannel#3,ParentScopeChannel#5),
> linkframe=org.apache.ode.bpel.runtime.LinkFrame@324438,
> remaining=[OPickReceive#42-ReceptionChoix, {OAssign : LectureReponse,
> joinCondition=null}, {OScope 'CompteRendu' id=55}])],
> OPickReceive#42-ReceptionChoix::14=[PICK(...)], {OScope
> '__PROCESS_SCOPE:ValidationProcess' id=3}::0=[SCOPE(...)],
> OSequence#27-Notification::1=[ACTIVITYGUARD(...)]}
> DEBUG - GeronimoLog.debug(66) | Resolving endpoint reference <?xml
> version="1.0" encoding="UTF-8"?>
> <EndpointReference xmlns="http://www.w3.org/2005/08/addressing"><session
> xmlns="http://www.intalio.com/type/session
> ">48bd271f1a2bb</session><Address>
> http://arrigo-dev/Notification/onResult.php</Address></EndpointReference>
> DEBUG - GeronimoLog.debug(66) | INVOKING PARTNER:
> partnerLink={PartnerLinkInstance
> partnerLinkDecl=OPartnerLink#25,scopeInstanceId=11972}, op=onResult
> channel=null)
> DEBUG - GeronimoLog.debug(66) | INVOKE PARTNER (SEP):
> sessionId=hqejbhcnphr3k60kw2ielm partnerSessionId=48bd271f1a2bb
> DEBUG - GeronimoLog.debug(66) | Invoking a partner operation: onResult
> ERROR - GeronimoLog.error(108) | Method "run" in class
> "org.apache.ode.bpel.runtime.INVOKE" threw an unexpected exception.
> java.lang.NullPointerException
>   at
> org.apache.ode.axis2.MessageExchangeContextImpl.invokePartner(MessageExchangeContextImpl.java:51)
>   at
> org.apache.ode.bpel.engine.BpelRuntimeContextImpl.invoke(BpelRuntimeContextImpl.java:775)
>
> ----------------------------------------------------------------------------------
>
> Here's my BPEL process:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <bpws:process exitOnStandardFault="yes" name="ValidationProcess"
>   suppressJoinFailure="no"
>   targetNamespace="http://sample.bpel.org/bpel/sample"
>   xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
>   xmlns:ns="http://www.example.org/client/"
>   xmlns:ns0="http://bpel.lmcu.fr/xsd/Validation"
>   xmlns:ns1="http://bpel.lmcu.fr/Notification/"
>   xmlns:ns2="http://bpel.lmcu.fr/tests/Validation" xmlns:tns="
> http://sample.bpel.org/bpel/sample">
>   <bpws:import importType="http://schemas.xmlsoap.org/wsdl/"
>       location="ValidationProcess.wsdl" namespace="
> http://sample.bpel.org/bpel/sample"/>
>   <bpws:import importType="http://schemas.xmlsoap.org/wsdl/"
>       location="Notification.wsdl" namespace="
> http://bpel.lmcu.fr/Notification/"/>
>   <bpws:import importType="http://schemas.xmlsoap.org/wsdl/"
>       location="client.wsdl" namespace="http://www.example.org/client/"/>
>   <bpws:import importType="http://www.w3.org/2001/XMLSchema"
>       location="Notification.xsd" namespace="
> http://bpel.lmcu.fr/xsd/Validation/request"/>
>   <bpws:partnerLinks>
>       <bpws:partnerLink initializePartnerRole="no"
>           myRole="ValidationProcessProvider" name="client"
>           partnerLinkType="tns:ValidationProcessPLT"
> partnerRole="ValidationProcessRequester"/>
>       <bpws:partnerLink initializePartnerRole="yes"
>           myRole="NotifierRole" name="Notification"
>           partnerLinkType="tns:NotificationPLT"
> partnerRole="NotifiedRole"/>
>   </bpws:partnerLinks>
>   <bpws:variables>
>       <bpws:variable messageType="tns:ValidationProcessRequestMessage"
> name="input"/>
>       <bpws:variable messageType="ns:onResultRequest" name="output"/>
>       <bpws:variable messageType="ns1:transmitRequest" name="Message"/>
>       <bpws:variable messageType="ns1:transmitResponse" name="Response1"/>
>       <bpws:variable messageType="ns1:callbackRequest" name="choice"/>
>   </bpws:variables>
>   <bpws:correlationSets>
>       <bpws:correlationSet name="CorrelationSet"/>
>   </bpws:correlationSets>
>   <bpws:sequence name="Notification">
>       <bpws:receive createInstance="yes" name="DemandeNotification"
>           operation="initiate" partnerLink="client"
>           portType="tns:ValidationProcess" variable="input"/>
>       <bpws:assign name="Initialisations" validate="no">
>           <bpws:copy keepSrcElementName="no">
>               <bpws:from part="payload" variable="input"/>
>               <bpws:to part="requete" variable="Message"/>
>           </bpws:copy>
>       </bpws:assign>
>       <bpws:invoke inputVariable="Message" name="EnvoiMessage"
>           operation="transmit" outputVariable="Response1"
>           partnerLink="Notification" portType="ns1:NotifiedPT"/>
>       <bpws:receive name="ReceptionChoix" operation="callback"
>           partnerLink="Notification" portType="ns1:NotifierPT"
> variable="choice"/>
>       <bpws:assign name="LectureReponse" validate="no">
>           <bpws:copy>
>               <bpws:from>
>                   <bpws:literal>
>                       <rep:onResultRequest xmlns:rep="
> http://www.example.org/client/">
>                           <rep:result/>
>                       </rep:onResultRequest>
>                   </bpws:literal>
>               </bpws:from>
>               <bpws:to part="parameters" variable="output"/>
>           </bpws:copy>
>           <bpws:copy keepSrcElementName="no">
>               <bpws:from part="response" variable="choice">
>                   <bpws:query
> queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[/response]]></bpws:query>
>               </bpws:from>
>               <bpws:to part="parameters" variable="output">
>                   <bpws:query
> queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[/ns:result]]></bpws:query>
>               </bpws:to>
>           </bpws:copy>
>       </bpws:assign>
>       <bpws:invoke inputVariable="output" name="CompteRendu"
>           operation="onResult" partnerLink="client" portType="ns:client"/>
>   </bpws:sequence>
> </bpws:process>
>
>
> ---------------------------------------------------------------------------------------------
> the client.wsdl:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:tns="http://www.example.org/client/" xmlns:wsdl="
> http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="
> http://www.w3.org/2001/XMLSchema" name="client" targetNamespace="
> http://www.example.org/client/">
> <wsdl:types>
> <xsd:schema targetNamespace="http://www.example.org/client/">
> <xsd:element name="onResultRequest"
> type="tns:onResultRequestType"></xsd:element>
>
>   <xsd:complexType name="onResultRequestType">
>       <xsd:sequence>
>           <xsd:element name="result" type="xsd:string"></xsd:element>
>       </xsd:sequence>
>   </xsd:complexType>
> </xsd:schema>
> </wsdl:types>
> <wsdl:message name="onResultRequest">
> <wsdl:part element="tns:onResultRequest" name="parameters"/>
> </wsdl:message>
> <wsdl:portType name="client">
> <wsdl:operation name="onResult">
> <wsdl:input message="tns:onResultRequest"/>
> </wsdl:operation>
> </wsdl:portType>
>   <wsdl:binding name="clientSOAP" type="tns:client">
>       <soap:binding style="document"
>           transport="http://schemas.xmlsoap.org/soap/http" />
>       <wsdl:operation name="onResult">
>           <soap:operation
>               soapAction="http://www.example.org/client/onResult" />
>           <wsdl:input>
>               <soap:body use="literal" />
>           </wsdl:input>
>           <wsdl:output>
>               <soap:body use="literal" />
>           </wsdl:output>
>       </wsdl:operation>
>   </wsdl:binding>
>   <wsdl:service name="clientWS">
> <wsdl:port binding="tns:clientSOAP" name="clientPort">
>           <soap:address location="
> http://arrigo-dev/Notification/onResult.php"/>
>       </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
>
> -----------------------------------------------------------------------------------------
>
> Thanks in advance for your responses,
>
> regards,
>
> Ph.
>
> --
>
>
>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message