On Tue, Sep 2, 2008 at 6:10 AM, Philippe Allart <[EMAIL PROTECTED]>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 > [EMAIL PROTECTED] > 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), > [EMAIL PROTECTED], > 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. > > -- > > > > >
