You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ode.apache.org by Dan <le...@gmail.com> on 2007/07/11 21:07:59 UTC

Invoking external service bound to soap/http fails.

Hi,

Does anyone have an example of an external service call using HTTP?

I'm trying to proxy a web service using ode/servicemix in prelude to doing
more complicated bpel.
I have a servicemix http (consumer) binding component accepting the request,
routing it to a bpel process which invokes the external web service by way
of the  the servicemix http (provider) bc.  The request is received and
apparently processed by the bpel, but the invoke fails with the error
below.  It looks like the message in the exception is formatted as an XML
RPC call, whereas it should be SOAP doc literal.

What might cause the soap call to get formatted like that?

ERROR - HttpComponent                  - Error processing exchange InOut[
  id: ID:localhost.localdomain-46471-1184175560049-3:0
  status: Active
  role: provider
  service: {http://example.org}RouteRequestService
  endpoint: RouteRequestServicePort
  operation: {http://example.org}routeRequestOverview
  in: <?xml version="1.0" encoding="UTF-8"?><ns0:myOperation xmlns:ns0="
http://example.org" xmlns:SOAP-ENV="
http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="java:thisprogram.beans"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance">
                <ns0:someData>
                    <ns1:someElement xmlns:ns1="java:thisprogram.beans">
....
com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '"' (code
34) in DOCTYPE declaration; expected a space between public and system
identifiers
 at [row,col {unknown-source}]: [1,55]

------------------------
Bpel code:

        <receive name="pingReceive"
                createInstance="yes"
                operation="Ping"
                partnerLink="PingPartnerLink"
                portType="ping:PingPortType"
                variable="pingRequest"/>

        <invoke name="invokeExternalWebService"
                operation="myOperation"
                inputVariable="pingRequest"
                outputVariable="pingResponse"
                partnerLink="ExternalWSPartnerLink"
                portType="ns0:ExternalWSPortType"/>

        <reply name="pingReply"
                partnerLink="PingPartnerLink"
                portType="ping:PingPortType"
                operation="Ping"
                variable="pingResponse"/>
----------------
ExtenalWS.wsdl:

<service ...
    <port ...
      <s1:address location=...
      <smix:endpoint role="provider" defaultMep="in-out"/>
------------------
jbi.xml
   <service-unit>
...
       <target>
         <artifacts-zip>ExternalWS-HTTPClient.zip</artifacts-zip>
         <component-name>servicemix-http</component-name>
------------------

Thanks,
Dan

Re: Invoking external service bound to soap/http fails.

Posted by Dan <le...@gmail.com>.
Thanks, Alex.  The INFO output was misleading, with DEBUG enabled the
problem was pretty obvious (an HTTP error due to an extra "/" in the url).

--Dan


On 7/11/07, Alex Boisvert <bo...@intalio.com> wrote:
>
> Hi Dan,
>
> There's a lot of confusing namespaces in the message but I don't see
> evidence of RPC encoding, e.g. xsi:type attributes.
>
> Perhaps you can set the "httpclient" log category to DEBUG to inspect the
> message content exchanged over HTTP.  You might catch a SOAP Fault or
> something like that.
>
> alex
>
>
> On 7/11/07, Dan <le...@gmail.com> wrote:
> >
> > Hi,
> > <Cleaned up syntax inconsistencies in original post.>
> >
> > Does anyone have an example of an external service call using HTTP?
> >
> > I'm trying to proxy a web service using ode/servicemix in prelude to
> doing
> > more complicated bpel.
> > I have a servicemix http (consumer) binding component accepting the
> > request,
> > routing it to a bpel process which invokes the external web service by
> way
> > of the  the servicemix http (provider) bc.  The request is received and
> > apparently processed by the bpel, but the invoke fails with the error
> > below.  It looks like the message in the exception is formatted as an
> XML
> > RPC call, whereas it should be SOAP doc literal.
> >
> > What might cause the soap call to get formatted like that?
> >
> > ERROR - HttpComponent                  - Error processing exchange
> InOut[
> >   id: ID:localhost.localdomain-46471-1184175560049-3:0
> >   status: Active
> >   role: provider
> >   service: {http://example.org}ExternalWebService
> >   endpoint: ExternalWSPort
> >   operation: { http://example.org}myOperation
> >   in: <?xml version="1.0" encoding="UTF-8"?><ns0:myOperation xmlns:ns0="
> > http://example.org" xmlns:SOAP-ENV="
> > http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="java:
> > thisprogram.beans"
> > xmlns:xsd="http://www.w3.org/2001/XMLSchema " xmlns:xsi="
> > http://www.w3.org/2001/XMLSchema-instance">
> >                 <ns0:someData>
> >                     <ns1:someElement xmlns:ns1="java: thisprogram.beans
> ">
> > ....
> > com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '"'
> > (code
> > 34) in DOCTYPE declaration; expected a space between public and system
> > identifiers
> > at [row,col {unknown-source}]: [1,55]
> >
> > ------------------------
> > Bpel code:
> >
> >         <receive name="pingReceive"
> >                 createInstance="yes"
> >                 operation="Ping"
> >                 partnerLink="PingPartnerLink"
> >                 portType="ping:PingPortType"
> >                 variable="pingRequest"/>
> >
> >         <invoke name="invokeExternalWebService"
> >                 operation="myOperation"
> >                 inputVariable="pingRequest"
> >                 outputVariable="pingResponse"
> >                 partnerLink="ExternalWSPartnerLink"
> >                 portType="ns0:ExternalWSPortType"/>
> >
> >         <reply name="pingReply"
> >                 partnerLink="PingPartnerLink"
> >                 portType="ping:PingPortType"
> >                 operation="Ping"
> >                 variable="pingResponse"/>
> > ----------------
> > ExtenalWS.wsdl:
> >
> > <service ...
> >     <port ...
> >       <s1:address location=...
> >       <smix:endpoint role="provider" defaultMep="in-out"/>
> > ------------------
> > jbi.xml
> >    <service-unit>
> > ...
> >        <target>
> >          <artifacts-zip>ExternalWS-HTTPClient.zip</artifacts-zip>
> >          <component-name>servicemix-http</component-name>
> > ------------------
> >
> > Thanks,
> > Dan
> >
>

Re: Invoking external service bound to soap/http fails.

Posted by Alex Boisvert <bo...@intalio.com>.
Hi Dan,

There's a lot of confusing namespaces in the message but I don't see
evidence of RPC encoding, e.g. xsi:type attributes.

Perhaps you can set the "httpclient" log category to DEBUG to inspect the
message content exchanged over HTTP.  You might catch a SOAP Fault or
something like that.

alex


On 7/11/07, Dan <le...@gmail.com> wrote:
>
> Hi,
> <Cleaned up syntax inconsistencies in original post.>
>
> Does anyone have an example of an external service call using HTTP?
>
> I'm trying to proxy a web service using ode/servicemix in prelude to doing
> more complicated bpel.
> I have a servicemix http (consumer) binding component accepting the
> request,
> routing it to a bpel process which invokes the external web service by way
> of the  the servicemix http (provider) bc.  The request is received and
> apparently processed by the bpel, but the invoke fails with the error
> below.  It looks like the message in the exception is formatted as an XML
> RPC call, whereas it should be SOAP doc literal.
>
> What might cause the soap call to get formatted like that?
>
> ERROR - HttpComponent                  - Error processing exchange InOut[
>   id: ID:localhost.localdomain-46471-1184175560049-3:0
>   status: Active
>   role: provider
>   service: {http://example.org}ExternalWebService
>   endpoint: ExternalWSPort
>   operation: { http://example.org}myOperation
>   in: <?xml version="1.0" encoding="UTF-8"?><ns0:myOperation xmlns:ns0="
> http://example.org" xmlns:SOAP-ENV="
> http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="java:
> thisprogram.beans"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema " xmlns:xsi="
> http://www.w3.org/2001/XMLSchema-instance">
>                 <ns0:someData>
>                     <ns1:someElement xmlns:ns1="java: thisprogram.beans">
> ....
> com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '"'
> (code
> 34) in DOCTYPE declaration; expected a space between public and system
> identifiers
> at [row,col {unknown-source}]: [1,55]
>
> ------------------------
> Bpel code:
>
>         <receive name="pingReceive"
>                 createInstance="yes"
>                 operation="Ping"
>                 partnerLink="PingPartnerLink"
>                 portType="ping:PingPortType"
>                 variable="pingRequest"/>
>
>         <invoke name="invokeExternalWebService"
>                 operation="myOperation"
>                 inputVariable="pingRequest"
>                 outputVariable="pingResponse"
>                 partnerLink="ExternalWSPartnerLink"
>                 portType="ns0:ExternalWSPortType"/>
>
>         <reply name="pingReply"
>                 partnerLink="PingPartnerLink"
>                 portType="ping:PingPortType"
>                 operation="Ping"
>                 variable="pingResponse"/>
> ----------------
> ExtenalWS.wsdl:
>
> <service ...
>     <port ...
>       <s1:address location=...
>       <smix:endpoint role="provider" defaultMep="in-out"/>
> ------------------
> jbi.xml
>    <service-unit>
> ...
>        <target>
>          <artifacts-zip>ExternalWS-HTTPClient.zip</artifacts-zip>
>          <component-name>servicemix-http</component-name>
> ------------------
>
> Thanks,
> Dan
>

Re: Invoking external service bound to soap/http fails.

Posted by Dan <le...@gmail.com>.
Hi,
<Cleaned up syntax inconsistencies in original post.>

Does anyone have an example of an external service call using HTTP?

I'm trying to proxy a web service using ode/servicemix in prelude to doing
more complicated bpel.
I have a servicemix http (consumer) binding component accepting the request,
routing it to a bpel process which invokes the external web service by way
of the  the servicemix http (provider) bc.  The request is received and
apparently processed by the bpel, but the invoke fails with the error
below.  It looks like the message in the exception is formatted as an XML
RPC call, whereas it should be SOAP doc literal.

What might cause the soap call to get formatted like that?

ERROR - HttpComponent                  - Error processing exchange InOut[
  id: ID:localhost.localdomain-46471-1184175560049-3:0
  status: Active
  role: provider
  service: {http://example.org}ExternalWebService
  endpoint: ExternalWSPort
  operation: { http://example.org}myOperation
  in: <?xml version="1.0" encoding="UTF-8"?><ns0:myOperation xmlns:ns0="
http://example.org" xmlns:SOAP-ENV="
http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="java:thisprogram.beans"
xmlns:xsd="http://www.w3.org/2001/XMLSchema " xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance">
                <ns0:someData>
                    <ns1:someElement xmlns:ns1="java: thisprogram.beans">
....
com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '"' (code
34) in DOCTYPE declaration; expected a space between public and system
identifiers
 at [row,col {unknown-source}]: [1,55]

------------------------
Bpel code:

        <receive name="pingReceive"
                createInstance="yes"
                operation="Ping"
                partnerLink="PingPartnerLink"
                portType="ping:PingPortType"
                variable="pingRequest"/>

        <invoke name="invokeExternalWebService"
                operation="myOperation"
                inputVariable="pingRequest"
                outputVariable="pingResponse"
                partnerLink="ExternalWSPartnerLink"
                portType="ns0:ExternalWSPortType"/>

        <reply name="pingReply"
                partnerLink="PingPartnerLink"
                portType="ping:PingPortType"
                operation="Ping"
                variable="pingResponse"/>
----------------
ExtenalWS.wsdl:

<service ...
    <port ...
      <s1:address location=...
      <smix:endpoint role="provider" defaultMep="in-out"/>
------------------
jbi.xml
   <service-unit>
...
       <target>
         <artifacts-zip>ExternalWS-HTTPClient.zip</artifacts-zip>
         <component-name>servicemix-http</component-name>
------------------

Thanks,
Dan