You can use the SOAPMonitor in Axis2 to monitor the messages to/from ODE. http://ws.apache.org/axis2/1_0/soapmonitor-module.html
You will need to download the Axis2 source and compile the SOAPMonitor applet, then follow the steps to add the various files into webapps/ode. Regards, Terry On 9 April 2010 08:47, KOP <[email protected]> wrote: > > Hi > > Whether does ODE support BPEL engine communicates with external service > through HTTP POST? > > Question from my experiment: > My experiment intends to make bpel invoke external service through HTTP > POST. The binding section in external > service WSDL is as follow: > <binding name="WPSChainHTTPPostBinding" type="tns:WPSChain"> > <http:binding verb="POST" /> > <operation name="DescribeProcess"> > <http:operation location="/WebProcessingService" /> > <input> > <mime:content > type="application/x-www-form-urlencoded" /> > </input> > <output> > <mime:content type="text/xml" /> > </output> > </operation> > </binding> > > Maybe workflow occurs in ode be summaried as follow: > step1: my client(SoapUI) sends SOAP message to ODE > step2: ODE extracts SOAP body and generates HTTP POST request to invoke > external service > step3: ODE receives POST response from external service > step4: ODE generate SOAP resposne with POST response > > However, according to my error log, it seems that ODE fails to extracts > SOAP > body and generates HTTP POST request to invoke external service at step 2. > The error > > message is showed as below (from error message, we found that request > entity > in POST is missing): > > > DEBUG - GeronimoLog.debug(66) | Received request message for > OGC_SingleBPEL.{http://www.kop.org/ogc_singlebpel}process<http://www.kop.org/ogc_singlebpel%7Dprocess> > DEBUG - GeronimoLog.debug(66) | ODE routed to operation Operation: > name=process > style=REQUEST_RESPONSE,1 > Input: name=null > Message: > name={http://www.kop.org/ogc_singlebpel}OGC_SingleBPELRequestMessage<http://www.kop.org/ogc_singlebpel%7DOGC_SingleBPELRequestMessage> > Part: name=parameters > elementName={http://www.opengis.net/wps/1.0.0}DescribeProcess<http://www.opengis.net/wps/1.0.0%7DDescribeProcess> > Output: name=null > Message: > name={http://www.kop.org/ogc_singlebpel}OGC_SingleBPELResponseMessage<http://www.kop.org/ogc_singlebpel%7DOGC_SingleBPELResponseMessage> > Part: name=parameters > elementName={http://www.opengis.net/wps/1.0.0}ProcessDescriptions<http://www.opengis.net/wps/1.0.0%7DProcessDescriptions>from > service > {http://www.kop.org/ogc_singlebpel}OGC_SingleBPELService<http://www.kop.org/ogc_singlebpel%7DOGC_SingleBPELService> > DEBUG - GeronimoLog.debug(66) | Invoking ODE using MEX > {MyRoleMex#hqejbhcnphr5604nfppo1b [Client null] calling > {http://www.kop.org/ogc_singlebpel} > > OGC_SingleBPELService.process(...)} > DEBUG - GeronimoLog.debug(66) | Message content: <?xml version="1.0" > encoding="UTF-8"?> > <message><parameters><DescribeProcess > xmlns="http://www.opengis.net/wps/1.0.0" language="eng" service="WPS" > version="1.0.0" xmlns:ns="http://www.opengis.net/wps/1.0.0" > > xmlns:ns1="http://www.opengis.net/ows/1.1" > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > > <Identifier xmlns="http://www.opengis.net/ows/1.1" > codeSpace="?">testProcess</Identifier> > </DescribeProcess></parameters></message> > DEBUG - GeronimoLog.debug(66) | invoke() EPR= null ==> > ODEProcess[{http://www.kop.org/ogc_singlebpel}OGC_SingleBPEL-1<http://www.kop.org/ogc_singlebpel%7DOGC_SingleBPEL-1> > ] > DEBUG - GeronimoLog.debug(66) | INPUTMSG: 18.process: MSG RCVD keys=[] > mySessionId=null partnerSessionId=null > DEBUG - GeronimoLog.debug(66) | INPUTMSG: 18.process: routing failed, > CREATING NEW INSTANCE > DEBUG - GeronimoLog.debug(66) | enqueue: for instance > {http://www.kop.org/ogc_singlebpel}OGC_SingleBPEL-1#601<http://www.kop.org/ogc_singlebpel%7DOGC_SingleBPEL-1#601> > : > org.apache.ode.bpel.engine.bpelinstanceworke...@1e55d39 > DEBUG - GeronimoLog.debug(66) | enqueuRunnable for process > {http://www.kop.org/ogc_singlebpel}OGC_SingleBPEL-1<http://www.kop.org/ogc_singlebpel%7DOGC_SingleBPEL-1>: > {BpelInstanceWorker for > > {http://www.kop.org/ogc_singlebpel}OGC_SingleBPEL-1#601<http://www.kop.org/ogc_singlebpel%7DOGC_SingleBPEL-1#601> > } > DEBUG - GeronimoLog.debug(66) | Starting worker thread > Thread[ODEServerImpl-2,5,main] for instance IID > {http://www.kop.org/ogc_singlebpel}OGC_SingleBPEL-1#601<http://www.kop.org/ogc_singlebpel%7DOGC_SingleBPEL-1#601> > DEBUG - GeronimoLog.debug(66) | Doing work for instance > {http://www.kop.org/ogc_singlebpel}OGC_SingleBPEL-1#601<http://www.kop.org/ogc_singlebpel%7DOGC_SingleBPEL-1#601>in > thread > Thread[ODEServerImpl-2,5,main] > DEBUG - GeronimoLog.debug(66) | Doing work for instance > {http://www.kop.org/ogc_singlebpel}OGC_SingleBPEL-1#601<http://www.kop.org/ogc_singlebpel%7DOGC_SingleBPEL-1#601>in > thread > Thread[ODEServerImpl-1,5,main] > DEBUG - GeronimoLog.debug(66) | SELECT: 13: USING CORRELATOR 18.process > DEBUG - GeronimoLog.debug(66) | SELECT: 13: CHECKING for NEW INSTANCE match > DEBUG - GeronimoLog.debug(66) | INPUTMSGMATCH: Changing process instance > state from ready to active > DEBUG - GeronimoLog.debug(66) | SELECT: 13: FOUND match for NEW instance > mexref=org.apache.ode.dao.jpa.messageexchangedaoi...@197507c > DEBUG - GeronimoLog.debug(66) | INVOKING PARTNER: > partnerLink={PartnerLinkInstance > partnerLinkDecl=OPartnerLink#19,scopeInstanceId=651}, op=DescribeProcess > channel=24) > DEBUG - GeronimoLog.debug(66) | Resolving endpoint reference <?xml > version="1.0" encoding="UTF-8"?> > <service-ref > xmlns="http://docs.oasis-open.org/wsbpel/2.0/serviceref > "><EndpointReference > xmlns="http://www.w3.org/2005/08/addressing"><Metadata><ServiceName > > xmlns="http://www.w3.org/2006/05/addressing/wsdl" > EndpointName="WPSChainHTTPPort" > > xmlns:servicens="http://www.kop.org/WPSChain > ">servicens:WPSChainService</ServiceName></Metadata><Address> > http://localhost:8080/cgi-bin/wps.py? > > </Address></EndpointReference></service-ref> > DEBUG - GeronimoLog.debug(66) | Setting myRoleMex session ids for p2p > interaction, mySession null - partnerSess null > DEBUG - GeronimoLog.debug(66) | INVOKE PARTNER (SEP): sessionId=null > partnerSessionId=null > DEBUG - GeronimoLog.debug(66) | schedulingRunnable for process > {http://www.kop.org/ogc_singlebpel}OGC_SingleBPEL-1<http://www.kop.org/ogc_singlebpel%7DOGC_SingleBPEL-1> > : > > > org.apache.ode.bpel.engine.partnerlinkpartnerroleimpl$unreliableinvo...@b41541 > DEBUG - GeronimoLog.debug(66) | Creating invocation check event for mexid > hqejbhcnphr5604nfppo1d > DEBUG - GeronimoLog.debug(66) | CACHE SAVE: #1 for instance 601 > DEBUG - GeronimoLog.debug(66) | Finished work for instance > {http://www.kop.org/ogc_singlebpel}OGC_SingleBPEL-1#601<http://www.kop.org/ogc_singlebpel%7DOGC_SingleBPEL-1#601>in > thread > Thread[ODEServerImpl-1,5,main] > DEBUG - GeronimoLog.debug(66) | Finished work for instance > {http://www.kop.org/ogc_singlebpel}OGC_SingleBPEL-1#601<http://www.kop.org/ogc_singlebpel%7DOGC_SingleBPEL-1#601>in > thread > Thread[ODEServerImpl-2,5,main] > DEBUG - GeronimoLog.debug(66) | Worker thread > Thread[ODEServerImpl-2,5,main] > for instance IID 601 ran out of work. > DEBUG - GeronimoLog.debug(66) | Invoking a partner operation: > DescribeProcess > DEBUG - GeronimoLog.debug(66) | The service to invoke is the external > service > {http://www.kop.org/WPSChain}WPSChainService:WPSChainHTTPPort<http://www.kop.org/WPSChain%7DWPSChainService:WPSChainHTTPPort> > DEBUG - GeronimoLog.debug(66) | Preparing HttpExternalService invocation... > DEBUG - GeronimoLog.debug(66) | Translating Properties for HttpClient. > Properties size=0 > DEBUG - GeronimoLog.debug(66) | Resolving endpoint reference <?xml > version="1.0" encoding="UTF-8"?> > <service-ref > xmlns="http://docs.oasis-open.org/wsbpel/2.0/serviceref > "><EndpointReference > xmlns="http://www.w3.org/2005/08/addressing"><Metadata><ServiceName > > EndpointName="WPSChainHTTPPort" > xmlns="http://www.w3.org/2006/05/addressing/wsdl" > > xmlns:servicens="http://www.kop.org/WPSChain > ">servicens:WPSChainService</ServiceName></Metadata><Address> > http://localhost:8080/cgi-bin/wps.py? > > </Address></EndpointReference></service-ref> > DEBUG - GeronimoLog.debug(66) | Preparing http request... > DEBUG - GeronimoLog.debug(66) | Content-Type > [application/x-www-form-urlencoded] Charset [ISO-8859-1] > DEBUG - GeronimoLog.debug(66) | Configuring http client... > DEBUG - GeronimoLog.debug(66) | Executing http request : POST > http://localhost:8080/cgi-bin/wps.py > DEBUG - GeronimoLog.debug(66) | HTTP Request Details: > POST http://localhost:8080/cgi-bin/wps.py > Request Headers: > Accept: text/xml > Request Entity: > Content-Type:application/x-www-form-urlencoded; charset=ISO-8859-1 > Content-Length:0 > Content-Charset:ISO-8859-1 > Request Entity: > > WARN - GeronimoLog.warn(92) | Going to buffer response body of large or > unknown size. Using getResponseBodyAsStream instead is recommended. > DEBUG - GeronimoLog.debug(66) | Received response for MEX > {PartnerRoleMex#hqejbhcnphr5604nfppo1d [PID null] calling > > [email protected](...)} > DEBUG - GeronimoLog.debug(66) | HTTP Response Details: > POST http://localhost:8080/cgi-bin/wps.py > Status-Line: HTTP/1.1 200 OK > Response Headers: > Date: Fri, 02 Apr 2010 06:35:39 GMT > Server: Apache/2.2.14 (Unix) > Transfer-Encoding: chunked > Content-Type: text/xml > Response Entity: > <?xml version="1.0" encoding="utf-8"?> > <ExceptionReport version="1.0.0" xmlns="http://www.opengis.net/ows" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> > <Exception exceptionCode="NoApplicableCode"> > <ExceptionText> > no element found: line 1, column 0 > </ExceptionText> > </Exception> > </ExceptionReport> > > > How can i solve this problem ? Special thanks for help! > Moreover,is there some tool or API to let me inspect SOAP message > transfered > between ODE and external service? > > > > KOP > > > > -- > View this message in context: > http://old.nabble.com/Question-about-ODE-invoking-external-service-through-HTTP-POST-tp28186313p28186313.html > Sent from the Apache Ode Dev mailing list archive at Nabble.com. > >
