You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by KOP <kl...@163.com> on 2010/04/09 02:47:15 UTC

Question about ODE invoking external service through HTTP POST

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
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
Part: name=parameters
elementName={http://www.opengis.net/wps/1.0.0}DescribeProcess
Output: name=null
Message:
name={http://www.kop.org/ogc_singlebpel}OGC_SingleBPELResponseMessage
Part: name=parameters
elementName={http://www.opengis.net/wps/1.0.0}ProcessDescriptions from
service {http://www.kop.org/ogc_singlebpel}OGC_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]
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:
org.apache.ode.bpel.engine.BpelInstanceWorker$1@1e55d39
DEBUG - GeronimoLog.debug(66) | enqueuRunnable for process
{http://www.kop.org/ogc_singlebpel}OGC_SingleBPEL-1: {BpelInstanceWorker for 

{http://www.kop.org/ogc_singlebpel}OGC_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
DEBUG - GeronimoLog.debug(66) | Doing work for instance
{http://www.kop.org/ogc_singlebpel}OGC_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 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.MessageExchangeDAOImpl@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: 

org.apache.ode.bpel.engine.PartnerLinkPartnerRoleImpl$UnreliableInvoker@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 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 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
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 

org.apache.ode.il.epr.WSAEndpoint@ff665a.DescribeProcess(...)}
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.


Re: Question about ODE invoking external service through HTTP POST

Posted by KOP <kl...@163.com>.
I used SOAPMonitor in ode before. However, SOAPMonitor can noly monitor
message communicated between ode client and ode instead of between ode and
invoked service.

Is there any API providing this monitor?


Terry Mueller wrote:
> 
> You can use the SOAPMonitor in Axis2 to monitor the messages to/from ODE.
> 
> http://ws.apache.org/axis2/1_0/soapmonitor-module.html
> 
> 

-- 
View this message in context: http://old.nabble.com/Question-about-ODE-invoking-external-service-through-HTTP-POST-tp28186313p28200518.html
Sent from the Apache Ode Dev mailing list archive at Nabble.com.


Re: Question about ODE invoking external service through HTTP POST

Posted by Terry Mueller <te...@permeance.com.au>.
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 <kl...@163.com> 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.BpelInstanceWorker$1@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.MessageExchangeDAOImpl@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$UnreliableInvoker@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
>
> org.apache.ode.il.epr.WSAEndpoint@ff665a.DescribeProcess(...)}
> 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.
>
>