You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by Diefenbach Anne <Di...@fgan.de> on 2009/03/23 17:24:41 UTC
Servicemix + CXF: Issue with async request-response webmethod
Hi,
I have a webservice described by the following WSDL:
<wsdl:message name="statusReportMsg">
<wsdl:part element="tns:statusReport" name="body"/>
</wsdl:message>
<wsdl:message name="requestAssistanceResponseMsg">
<wsdl:part element="tns:requestAssistanceResponse" name="body"/>
</wsdl:message>
<wsdl:message name="requestAssistanceMsg">
<wsdl:part element="tns:requestAssistance" name="body"/>
</wsdl:message>
<wsdl:message name="requestAssistanceFaultMsg">
<wsdl:part element="tns:requestAssistanceFault" name="error"/>
</wsdl:message>
<wsdl:portType name="Einsatzleitung">
<wsdl:operation name="requestAssistance">
<wsdl:input message="tns:requestAssistanceMsg"/>
<wsdl:output message="tns:requestAssistanceResponseMsg"/>
<wsdl:fault message="tns:requestAssistanceFaultMsg" name="error"/>
</wsdl:operation>
<wsdl:operation name="statusReport">
<wsdl:input message="tns:statusReportMsg"/>
</wsdl:operation>
<wsdl:operation name="requestLongTermAssistance">
<jaxws:bindings>
<jaxws:enableAsyncMapping>true</jaxws:enableAsyncMapping>
</jaxws:bindings>
<wsdl:input name="requestLongTermAssistanceRequest" message="tns:requestAssistanceMsg"/>
<wsdl:output name="requestLongTermAssistanceResponse" message="tns:requestAssistanceResponseMsg"/>
<wsdl:fault message="tns:requestAssistanceFaultMsg" name="error"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:service name="EinsatzleitungProvider">
<wsdl:port binding="tns:Einsatzleitung_httpSoap" name="Einsatzleitung_WS-I">
<soap:address location="http://localhost:8888/soap/EinsatzleitungProvider"/>
</wsdl:port>
</wsdl:service>
<wsdl:binding name="Einsatzleitung_httpSoap" type="tns:Einsatzleitung">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="requestAssistance">
<soap:operation soapAction="requestAssistance"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="error">
<soap:fault name="error" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="statusReport">
<soap:operation soapAction="statusReport"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
</wsdl:operation>
<wsdl:operation name="requestLongTermAssistance">
<soap:operation soapAction="requestLongTermAssistance"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
I used this to implement my CXF provider and consumer with wsdl2java, everything worked fine. But now I have deployed my provider into Servicemix CXF SE, and as a result the asynchronous method requestLongTermAssistance is no longer invoked by the provider. Instead, when the request from the consumer arrives, the synchronous requestAssistance is invoked - always.
Is this because both request messages are of type requestAssistanceMsg? Is there a way I can get this to work as is, or do I need to change my schema?
I would be grateful for any help. Please find my service and client implementation as well as the Servicemix log attached.
Regards, <<Einsatzleitung_EinsatzleitungWSI_Client.java>> <<EinsatzleitungImpl.java>> <<servicemix.log>>
Anne Diefenbach
- FKIE-KOM -
*************************************************
Forschungsgesellschaft für
Angewandte Naturwissenschaften e. V. (FGAN)
E-Mail: diefenbach@fgan.de
Web: www.fgan.de
************************************************
Re: AW: Servicemix + CXF: Issue with async request-response webmethod
Posted by Freeman Fang <fr...@gmail.com>.
Hi,
The problem is that with your previous wsdl, the soap message sent from
your client is exactly same between two methods, it's hard for server
side to determine which method should be dispatch. And I'm not sure it
can work stably even with standalone cxf server. Also think about your
client may talk with other kind of server, so you should avoid this confuse.
Freeman
Diefenbach Anne wrote:
> Hi Freeman,
>
> it's working now, thanks!
>
> Is the method invocation done based solely on the message type? I'm kinda surprised by this - after all, I explicitly invoke the method on the proxy. And using only CXF it worked without problems, even though I had to trick wsdl2java into generating the code conforming to my WSDL-with-same-method-signatures.
>
> Thank you again for your help,
>
> Anne
>
> -----Ursprüngliche Nachricht-----
> Von: Freeman Fang [mailto:freeman.fang@gmail.com]
> Gesendet: Mittwoch, 25. März 2009 03:11
> An: users@servicemix.apache.org
> Betreff: Re: Servicemix + CXF: Issue with async request-response webmethod
>
> Hi Anne,
>
> Two methods in your service actually use same input and output message,
> in this case you should use wrapped mode so that the method name is also
> in the soap message so that we can tell which method should be dispatched.
> You need change your types part and the message part in your wsdl.
> Although you didn't append the types part in your wsdl, but I believe
> you already have something like
> <element name="requestAssistance">
> <complexType>
> <sequence>
> ....
> </sequence>
> </complexType>
> </element>
> <element name="requestAssistanceResponse">
> <complexType>
> <sequence>
> ....
> </sequence>
> </complexType>
> </element>
> <element name="requestAssistanceFault">
> <complexType>
> <sequence>
> ....
> </sequence>
> </complexType>
> </element>
> these should be used for your requestAssistance method
> Also you need add schema for your requestLongTermAssistance method, just
> change the element name should be fine
>
> <element name="requestLongTermAssistance">
> <complexType>
> <sequence>
> ....
> </sequence>
> </complexType>
> </element>
> <element name="requestLongTermAssistanceResponse">
> <complexType>
> <sequence>
> ....
> </sequence>
> </complexType>
> </element>
> <element name="requestLongTermAssistanceFault">
> <complexType>
> <sequence>
> ....
> </sequence>
> </complexType>
> </element>
> in your types
>
> And also add
>
> <wsdl:message name="requestLongTermAssistanceResponseMsg">
> <wsdl:part element="tns:requestLongTermAssistanceResponse" name="body"/>
> </wsdl:message>
> <wsdl:message name="requestLongTermAssistanceMsg">
> <wsdl:part element="tns:requestLongTermAssistance" name="body"/>
> </wsdl:message>
> <wsdl:message name="requestLongTermAssistanceFaultMsg">
> <wsdl:part element="tns:requestLongTermAssistanceFault" name="error"/>
> </wsdl:message>
>
> And change requestLongTermAssistance operation in your wsdl:operation like
>
>
> <wsdl:operation name="requestLongTermAssistance">
> <jaxws:bindings>
> <jaxws:enableAsyncMapping>true</jaxws:enableAsyncMapping>
> </jaxws:bindings>
> <wsdl:input name="requestLongTermAssistanceRequest"
> message="tns:requestLongTermAssistanceMsg"/>
> <wsdl:output name="requestLongTermAssistanceResponse"
> message="tns:requestLongTermAssistanceResponseMsg"/>
> <wsdl:fault message="tns:requestLongTermAssistanceFaultMsg"
> name="error"/>
> </wsdl:operation>
>
> Could you apply these changes and get it a try?
> Freeman
> Diefenbach Anne wrote:
>
>> Giving Nabble a try... the ZIP file you will hopefully be able to access
>> contains my client code as well as the service implementation and the log
>> file. Please let me know if you require anything else.
>>
>> Regards,
>> Anne
>>
>>
>> Diefenbach Anne wrote:
>>
>>
>>> Hi,
>>>
>>> I have a webservice described by the following WSDL:
>>>
>>> <wsdl:message name="statusReportMsg">
>>> <wsdl:part element="tns:statusReport" name="body"/>
>>> </wsdl:message>
>>>
>>> <wsdl:message name="requestAssistanceResponseMsg">
>>> <wsdl:part element="tns:requestAssistanceResponse" name="body"/>
>>> </wsdl:message>
>>> <wsdl:message name="requestAssistanceMsg">
>>> <wsdl:part element="tns:requestAssistance" name="body"/>
>>> </wsdl:message>
>>> <wsdl:message name="requestAssistanceFaultMsg">
>>> <wsdl:part element="tns:requestAssistanceFault" name="error"/>
>>> </wsdl:message>
>>>
>>> <wsdl:portType name="Einsatzleitung">
>>> <wsdl:operation name="requestAssistance">
>>> <wsdl:input message="tns:requestAssistanceMsg"/>
>>> <wsdl:output message="tns:requestAssistanceResponseMsg"/>
>>> <wsdl:fault message="tns:requestAssistanceFaultMsg" name="error"/>
>>> </wsdl:operation>
>>> <wsdl:operation name="statusReport">
>>> <wsdl:input message="tns:statusReportMsg"/>
>>> </wsdl:operation>
>>>
>>> <wsdl:operation name="requestLongTermAssistance">
>>> <jaxws:bindings>
>>> <jaxws:enableAsyncMapping>true</jaxws:enableAsyncMapping>
>>> </jaxws:bindings>
>>> <wsdl:input name="requestLongTermAssistanceRequest"
>>> message="tns:requestAssistanceMsg"/>
>>> <wsdl:output name="requestLongTermAssistanceResponse"
>>> message="tns:requestAssistanceResponseMsg"/>
>>> <wsdl:fault message="tns:requestAssistanceFaultMsg" name="error"/>
>>> </wsdl:operation>
>>>
>>> </wsdl:portType>
>>>
>>> <wsdl:service name="EinsatzleitungProvider">
>>> <wsdl:port binding="tns:Einsatzleitung_httpSoap"
>>> name="Einsatzleitung_WS-I">
>>> <soap:address
>>> location="http://localhost:8888/soap/EinsatzleitungProvider"/>
>>> </wsdl:port>
>>> </wsdl:service>
>>>
>>> <wsdl:binding name="Einsatzleitung_httpSoap" type="tns:Einsatzleitung">
>>> <soap:binding style="document"
>>> transport="http://schemas.xmlsoap.org/soap/http"/>
>>> <wsdl:operation name="requestAssistance">
>>> <soap:operation soapAction="requestAssistance"/>
>>> <wsdl:input>
>>> <soap:body use="literal"/>
>>> </wsdl:input>
>>> <wsdl:output>
>>> <soap:body use="literal"/>
>>> </wsdl:output>
>>> <wsdl:fault name="error">
>>> <soap:fault name="error" use="literal"/>
>>> </wsdl:fault>
>>> </wsdl:operation>
>>> <wsdl:operation name="statusReport">
>>> <soap:operation soapAction="statusReport"/>
>>> <wsdl:input>
>>> <soap:body use="literal"/>
>>> </wsdl:input>
>>> </wsdl:operation>
>>> <wsdl:operation name="requestLongTermAssistance">
>>> <soap:operation soapAction="requestLongTermAssistance"/>
>>> <wsdl:input>
>>> <soap:body use="literal"/>
>>> </wsdl:input>
>>> <wsdl:output>
>>> <soap:body use="literal"/>
>>> </wsdl:output>
>>> </wsdl:operation>
>>> </wsdl:binding>
>>>
>>> I used this to implement my CXF provider and consumer with wsdl2java,
>>> everything worked fine. But now I have deployed my provider into
>>> Servicemix CXF SE, and as a result the asynchronous method
>>> requestLongTermAssistance is no longer invoked by the provider. Instead,
>>> when the request from the consumer arrives, the synchronous
>>> requestAssistance is invoked - always.
>>>
>>> Is this because both request messages are of type requestAssistanceMsg? Is
>>> there a way I can get this to work as is, or do I need to change my
>>> schema?
>>>
>>> I would be grateful for any help. Please find my service and client
>>> implementation as well as the Servicemix log attached.
>>>
>>> Regards, <<Einsatzleitung_EinsatzleitungWSI_Client.java>>
>>> <<EinsatzleitungImpl.java>> <<servicemix.log>>
>>>
>>> Anne Diefenbach
>>> - FKIE-KOM -
>>> *************************************************
>>> Forschungsgesellschaft für
>>> Angewandte Naturwissenschaften e. V. (FGAN)
>>> E-Mail: diefenbach@fgan.de
>>> Web: www.fgan.de
>>> ************************************************
>>>
>>>
>>>
>>>
>>>
>>>
>> http://www.nabble.com/file/p22676005/AsyncProblem.zip AsyncProblem.zip
>>
>>
>
>
>
AW: Servicemix + CXF: Issue with async request-response webmethod
Posted by Diefenbach Anne <Di...@fgan.de>.
Hi Freeman,
it's working now, thanks!
Is the method invocation done based solely on the message type? I'm kinda surprised by this - after all, I explicitly invoke the method on the proxy. And using only CXF it worked without problems, even though I had to trick wsdl2java into generating the code conforming to my WSDL-with-same-method-signatures.
Thank you again for your help,
Anne
-----Ursprüngliche Nachricht-----
Von: Freeman Fang [mailto:freeman.fang@gmail.com]
Gesendet: Mittwoch, 25. März 2009 03:11
An: users@servicemix.apache.org
Betreff: Re: Servicemix + CXF: Issue with async request-response webmethod
Hi Anne,
Two methods in your service actually use same input and output message,
in this case you should use wrapped mode so that the method name is also
in the soap message so that we can tell which method should be dispatched.
You need change your types part and the message part in your wsdl.
Although you didn't append the types part in your wsdl, but I believe
you already have something like
<element name="requestAssistance">
<complexType>
<sequence>
....
</sequence>
</complexType>
</element>
<element name="requestAssistanceResponse">
<complexType>
<sequence>
....
</sequence>
</complexType>
</element>
<element name="requestAssistanceFault">
<complexType>
<sequence>
....
</sequence>
</complexType>
</element>
these should be used for your requestAssistance method
Also you need add schema for your requestLongTermAssistance method, just
change the element name should be fine
<element name="requestLongTermAssistance">
<complexType>
<sequence>
....
</sequence>
</complexType>
</element>
<element name="requestLongTermAssistanceResponse">
<complexType>
<sequence>
....
</sequence>
</complexType>
</element>
<element name="requestLongTermAssistanceFault">
<complexType>
<sequence>
....
</sequence>
</complexType>
</element>
in your types
And also add
<wsdl:message name="requestLongTermAssistanceResponseMsg">
<wsdl:part element="tns:requestLongTermAssistanceResponse" name="body"/>
</wsdl:message>
<wsdl:message name="requestLongTermAssistanceMsg">
<wsdl:part element="tns:requestLongTermAssistance" name="body"/>
</wsdl:message>
<wsdl:message name="requestLongTermAssistanceFaultMsg">
<wsdl:part element="tns:requestLongTermAssistanceFault" name="error"/>
</wsdl:message>
And change requestLongTermAssistance operation in your wsdl:operation like
<wsdl:operation name="requestLongTermAssistance">
<jaxws:bindings>
<jaxws:enableAsyncMapping>true</jaxws:enableAsyncMapping>
</jaxws:bindings>
<wsdl:input name="requestLongTermAssistanceRequest"
message="tns:requestLongTermAssistanceMsg"/>
<wsdl:output name="requestLongTermAssistanceResponse"
message="tns:requestLongTermAssistanceResponseMsg"/>
<wsdl:fault message="tns:requestLongTermAssistanceFaultMsg"
name="error"/>
</wsdl:operation>
Could you apply these changes and get it a try?
Freeman
Diefenbach Anne wrote:
> Giving Nabble a try... the ZIP file you will hopefully be able to access
> contains my client code as well as the service implementation and the log
> file. Please let me know if you require anything else.
>
> Regards,
> Anne
>
>
> Diefenbach Anne wrote:
>
>> Hi,
>>
>> I have a webservice described by the following WSDL:
>>
>> <wsdl:message name="statusReportMsg">
>> <wsdl:part element="tns:statusReport" name="body"/>
>> </wsdl:message>
>>
>> <wsdl:message name="requestAssistanceResponseMsg">
>> <wsdl:part element="tns:requestAssistanceResponse" name="body"/>
>> </wsdl:message>
>> <wsdl:message name="requestAssistanceMsg">
>> <wsdl:part element="tns:requestAssistance" name="body"/>
>> </wsdl:message>
>> <wsdl:message name="requestAssistanceFaultMsg">
>> <wsdl:part element="tns:requestAssistanceFault" name="error"/>
>> </wsdl:message>
>>
>> <wsdl:portType name="Einsatzleitung">
>> <wsdl:operation name="requestAssistance">
>> <wsdl:input message="tns:requestAssistanceMsg"/>
>> <wsdl:output message="tns:requestAssistanceResponseMsg"/>
>> <wsdl:fault message="tns:requestAssistanceFaultMsg" name="error"/>
>> </wsdl:operation>
>> <wsdl:operation name="statusReport">
>> <wsdl:input message="tns:statusReportMsg"/>
>> </wsdl:operation>
>>
>> <wsdl:operation name="requestLongTermAssistance">
>> <jaxws:bindings>
>> <jaxws:enableAsyncMapping>true</jaxws:enableAsyncMapping>
>> </jaxws:bindings>
>> <wsdl:input name="requestLongTermAssistanceRequest"
>> message="tns:requestAssistanceMsg"/>
>> <wsdl:output name="requestLongTermAssistanceResponse"
>> message="tns:requestAssistanceResponseMsg"/>
>> <wsdl:fault message="tns:requestAssistanceFaultMsg" name="error"/>
>> </wsdl:operation>
>>
>> </wsdl:portType>
>>
>> <wsdl:service name="EinsatzleitungProvider">
>> <wsdl:port binding="tns:Einsatzleitung_httpSoap"
>> name="Einsatzleitung_WS-I">
>> <soap:address
>> location="http://localhost:8888/soap/EinsatzleitungProvider"/>
>> </wsdl:port>
>> </wsdl:service>
>>
>> <wsdl:binding name="Einsatzleitung_httpSoap" type="tns:Einsatzleitung">
>> <soap:binding style="document"
>> transport="http://schemas.xmlsoap.org/soap/http"/>
>> <wsdl:operation name="requestAssistance">
>> <soap:operation soapAction="requestAssistance"/>
>> <wsdl:input>
>> <soap:body use="literal"/>
>> </wsdl:input>
>> <wsdl:output>
>> <soap:body use="literal"/>
>> </wsdl:output>
>> <wsdl:fault name="error">
>> <soap:fault name="error" use="literal"/>
>> </wsdl:fault>
>> </wsdl:operation>
>> <wsdl:operation name="statusReport">
>> <soap:operation soapAction="statusReport"/>
>> <wsdl:input>
>> <soap:body use="literal"/>
>> </wsdl:input>
>> </wsdl:operation>
>> <wsdl:operation name="requestLongTermAssistance">
>> <soap:operation soapAction="requestLongTermAssistance"/>
>> <wsdl:input>
>> <soap:body use="literal"/>
>> </wsdl:input>
>> <wsdl:output>
>> <soap:body use="literal"/>
>> </wsdl:output>
>> </wsdl:operation>
>> </wsdl:binding>
>>
>> I used this to implement my CXF provider and consumer with wsdl2java,
>> everything worked fine. But now I have deployed my provider into
>> Servicemix CXF SE, and as a result the asynchronous method
>> requestLongTermAssistance is no longer invoked by the provider. Instead,
>> when the request from the consumer arrives, the synchronous
>> requestAssistance is invoked - always.
>>
>> Is this because both request messages are of type requestAssistanceMsg? Is
>> there a way I can get this to work as is, or do I need to change my
>> schema?
>>
>> I would be grateful for any help. Please find my service and client
>> implementation as well as the Servicemix log attached.
>>
>> Regards, <<Einsatzleitung_EinsatzleitungWSI_Client.java>>
>> <<EinsatzleitungImpl.java>> <<servicemix.log>>
>>
>> Anne Diefenbach
>> - FKIE-KOM -
>> *************************************************
>> Forschungsgesellschaft für
>> Angewandte Naturwissenschaften e. V. (FGAN)
>> E-Mail: diefenbach@fgan.de
>> Web: www.fgan.de
>> ************************************************
>>
>>
>>
>>
>>
> http://www.nabble.com/file/p22676005/AsyncProblem.zip AsyncProblem.zip
>
Re: Servicemix + CXF: Issue with async request-response webmethod
Posted by Freeman Fang <fr...@gmail.com>.
Hi Anne,
Two methods in your service actually use same input and output message,
in this case you should use wrapped mode so that the method name is also
in the soap message so that we can tell which method should be dispatched.
You need change your types part and the message part in your wsdl.
Although you didn't append the types part in your wsdl, but I believe
you already have something like
<element name="requestAssistance">
<complexType>
<sequence>
....
</sequence>
</complexType>
</element>
<element name="requestAssistanceResponse">
<complexType>
<sequence>
....
</sequence>
</complexType>
</element>
<element name="requestAssistanceFault">
<complexType>
<sequence>
....
</sequence>
</complexType>
</element>
these should be used for your requestAssistance method
Also you need add schema for your requestLongTermAssistance method, just
change the element name should be fine
<element name="requestLongTermAssistance">
<complexType>
<sequence>
....
</sequence>
</complexType>
</element>
<element name="requestLongTermAssistanceResponse">
<complexType>
<sequence>
....
</sequence>
</complexType>
</element>
<element name="requestLongTermAssistanceFault">
<complexType>
<sequence>
....
</sequence>
</complexType>
</element>
in your types
And also add
<wsdl:message name="requestLongTermAssistanceResponseMsg">
<wsdl:part element="tns:requestLongTermAssistanceResponse" name="body"/>
</wsdl:message>
<wsdl:message name="requestLongTermAssistanceMsg">
<wsdl:part element="tns:requestLongTermAssistance" name="body"/>
</wsdl:message>
<wsdl:message name="requestLongTermAssistanceFaultMsg">
<wsdl:part element="tns:requestLongTermAssistanceFault" name="error"/>
</wsdl:message>
And change requestLongTermAssistance operation in your wsdl:operation like
<wsdl:operation name="requestLongTermAssistance">
<jaxws:bindings>
<jaxws:enableAsyncMapping>true</jaxws:enableAsyncMapping>
</jaxws:bindings>
<wsdl:input name="requestLongTermAssistanceRequest"
message="tns:requestLongTermAssistanceMsg"/>
<wsdl:output name="requestLongTermAssistanceResponse"
message="tns:requestLongTermAssistanceResponseMsg"/>
<wsdl:fault message="tns:requestLongTermAssistanceFaultMsg"
name="error"/>
</wsdl:operation>
Could you apply these changes and get it a try?
Freeman
Diefenbach Anne wrote:
> Giving Nabble a try... the ZIP file you will hopefully be able to access
> contains my client code as well as the service implementation and the log
> file. Please let me know if you require anything else.
>
> Regards,
> Anne
>
>
> Diefenbach Anne wrote:
>
>> Hi,
>>
>> I have a webservice described by the following WSDL:
>>
>> <wsdl:message name="statusReportMsg">
>> <wsdl:part element="tns:statusReport" name="body"/>
>> </wsdl:message>
>>
>> <wsdl:message name="requestAssistanceResponseMsg">
>> <wsdl:part element="tns:requestAssistanceResponse" name="body"/>
>> </wsdl:message>
>> <wsdl:message name="requestAssistanceMsg">
>> <wsdl:part element="tns:requestAssistance" name="body"/>
>> </wsdl:message>
>> <wsdl:message name="requestAssistanceFaultMsg">
>> <wsdl:part element="tns:requestAssistanceFault" name="error"/>
>> </wsdl:message>
>>
>> <wsdl:portType name="Einsatzleitung">
>> <wsdl:operation name="requestAssistance">
>> <wsdl:input message="tns:requestAssistanceMsg"/>
>> <wsdl:output message="tns:requestAssistanceResponseMsg"/>
>> <wsdl:fault message="tns:requestAssistanceFaultMsg" name="error"/>
>> </wsdl:operation>
>> <wsdl:operation name="statusReport">
>> <wsdl:input message="tns:statusReportMsg"/>
>> </wsdl:operation>
>>
>> <wsdl:operation name="requestLongTermAssistance">
>> <jaxws:bindings>
>> <jaxws:enableAsyncMapping>true</jaxws:enableAsyncMapping>
>> </jaxws:bindings>
>> <wsdl:input name="requestLongTermAssistanceRequest"
>> message="tns:requestAssistanceMsg"/>
>> <wsdl:output name="requestLongTermAssistanceResponse"
>> message="tns:requestAssistanceResponseMsg"/>
>> <wsdl:fault message="tns:requestAssistanceFaultMsg" name="error"/>
>> </wsdl:operation>
>>
>> </wsdl:portType>
>>
>> <wsdl:service name="EinsatzleitungProvider">
>> <wsdl:port binding="tns:Einsatzleitung_httpSoap"
>> name="Einsatzleitung_WS-I">
>> <soap:address
>> location="http://localhost:8888/soap/EinsatzleitungProvider"/>
>> </wsdl:port>
>> </wsdl:service>
>>
>> <wsdl:binding name="Einsatzleitung_httpSoap" type="tns:Einsatzleitung">
>> <soap:binding style="document"
>> transport="http://schemas.xmlsoap.org/soap/http"/>
>> <wsdl:operation name="requestAssistance">
>> <soap:operation soapAction="requestAssistance"/>
>> <wsdl:input>
>> <soap:body use="literal"/>
>> </wsdl:input>
>> <wsdl:output>
>> <soap:body use="literal"/>
>> </wsdl:output>
>> <wsdl:fault name="error">
>> <soap:fault name="error" use="literal"/>
>> </wsdl:fault>
>> </wsdl:operation>
>> <wsdl:operation name="statusReport">
>> <soap:operation soapAction="statusReport"/>
>> <wsdl:input>
>> <soap:body use="literal"/>
>> </wsdl:input>
>> </wsdl:operation>
>> <wsdl:operation name="requestLongTermAssistance">
>> <soap:operation soapAction="requestLongTermAssistance"/>
>> <wsdl:input>
>> <soap:body use="literal"/>
>> </wsdl:input>
>> <wsdl:output>
>> <soap:body use="literal"/>
>> </wsdl:output>
>> </wsdl:operation>
>> </wsdl:binding>
>>
>> I used this to implement my CXF provider and consumer with wsdl2java,
>> everything worked fine. But now I have deployed my provider into
>> Servicemix CXF SE, and as a result the asynchronous method
>> requestLongTermAssistance is no longer invoked by the provider. Instead,
>> when the request from the consumer arrives, the synchronous
>> requestAssistance is invoked - always.
>>
>> Is this because both request messages are of type requestAssistanceMsg? Is
>> there a way I can get this to work as is, or do I need to change my
>> schema?
>>
>> I would be grateful for any help. Please find my service and client
>> implementation as well as the Servicemix log attached.
>>
>> Regards, <<Einsatzleitung_EinsatzleitungWSI_Client.java>>
>> <<EinsatzleitungImpl.java>> <<servicemix.log>>
>>
>> Anne Diefenbach
>> - FKIE-KOM -
>> *************************************************
>> Forschungsgesellschaft für
>> Angewandte Naturwissenschaften e. V. (FGAN)
>> E-Mail: diefenbach@fgan.de
>> Web: www.fgan.de
>> ************************************************
>>
>>
>>
>>
>>
> http://www.nabble.com/file/p22676005/AsyncProblem.zip AsyncProblem.zip
>
Re: Servicemix + CXF: Issue with async request-response webmethod
Posted by Diefenbach Anne <Di...@fgan.de>.
Giving Nabble a try... the ZIP file you will hopefully be able to access
contains my client code as well as the service implementation and the log
file. Please let me know if you require anything else.
Regards,
Anne
Diefenbach Anne wrote:
>
> Hi,
>
> I have a webservice described by the following WSDL:
>
> <wsdl:message name="statusReportMsg">
> <wsdl:part element="tns:statusReport" name="body"/>
> </wsdl:message>
>
> <wsdl:message name="requestAssistanceResponseMsg">
> <wsdl:part element="tns:requestAssistanceResponse" name="body"/>
> </wsdl:message>
> <wsdl:message name="requestAssistanceMsg">
> <wsdl:part element="tns:requestAssistance" name="body"/>
> </wsdl:message>
> <wsdl:message name="requestAssistanceFaultMsg">
> <wsdl:part element="tns:requestAssistanceFault" name="error"/>
> </wsdl:message>
>
> <wsdl:portType name="Einsatzleitung">
> <wsdl:operation name="requestAssistance">
> <wsdl:input message="tns:requestAssistanceMsg"/>
> <wsdl:output message="tns:requestAssistanceResponseMsg"/>
> <wsdl:fault message="tns:requestAssistanceFaultMsg" name="error"/>
> </wsdl:operation>
> <wsdl:operation name="statusReport">
> <wsdl:input message="tns:statusReportMsg"/>
> </wsdl:operation>
>
> <wsdl:operation name="requestLongTermAssistance">
> <jaxws:bindings>
> <jaxws:enableAsyncMapping>true</jaxws:enableAsyncMapping>
> </jaxws:bindings>
> <wsdl:input name="requestLongTermAssistanceRequest"
> message="tns:requestAssistanceMsg"/>
> <wsdl:output name="requestLongTermAssistanceResponse"
> message="tns:requestAssistanceResponseMsg"/>
> <wsdl:fault message="tns:requestAssistanceFaultMsg" name="error"/>
> </wsdl:operation>
>
> </wsdl:portType>
>
> <wsdl:service name="EinsatzleitungProvider">
> <wsdl:port binding="tns:Einsatzleitung_httpSoap"
> name="Einsatzleitung_WS-I">
> <soap:address
> location="http://localhost:8888/soap/EinsatzleitungProvider"/>
> </wsdl:port>
> </wsdl:service>
>
> <wsdl:binding name="Einsatzleitung_httpSoap" type="tns:Einsatzleitung">
> <soap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"/>
> <wsdl:operation name="requestAssistance">
> <soap:operation soapAction="requestAssistance"/>
> <wsdl:input>
> <soap:body use="literal"/>
> </wsdl:input>
> <wsdl:output>
> <soap:body use="literal"/>
> </wsdl:output>
> <wsdl:fault name="error">
> <soap:fault name="error" use="literal"/>
> </wsdl:fault>
> </wsdl:operation>
> <wsdl:operation name="statusReport">
> <soap:operation soapAction="statusReport"/>
> <wsdl:input>
> <soap:body use="literal"/>
> </wsdl:input>
> </wsdl:operation>
> <wsdl:operation name="requestLongTermAssistance">
> <soap:operation soapAction="requestLongTermAssistance"/>
> <wsdl:input>
> <soap:body use="literal"/>
> </wsdl:input>
> <wsdl:output>
> <soap:body use="literal"/>
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
>
> I used this to implement my CXF provider and consumer with wsdl2java,
> everything worked fine. But now I have deployed my provider into
> Servicemix CXF SE, and as a result the asynchronous method
> requestLongTermAssistance is no longer invoked by the provider. Instead,
> when the request from the consumer arrives, the synchronous
> requestAssistance is invoked - always.
>
> Is this because both request messages are of type requestAssistanceMsg? Is
> there a way I can get this to work as is, or do I need to change my
> schema?
>
> I would be grateful for any help. Please find my service and client
> implementation as well as the Servicemix log attached.
>
> Regards, <<Einsatzleitung_EinsatzleitungWSI_Client.java>>
> <<EinsatzleitungImpl.java>> <<servicemix.log>>
>
> Anne Diefenbach
> - FKIE-KOM -
> *************************************************
> Forschungsgesellschaft für
> Angewandte Naturwissenschaften e. V. (FGAN)
> E-Mail: diefenbach@fgan.de
> Web: www.fgan.de
> ************************************************
>
>
>
>
http://www.nabble.com/file/p22676005/AsyncProblem.zip AsyncProblem.zip
--
View this message in context: http://www.nabble.com/Servicemix-%2B-CXF%3A-Issue-with-async-request-response-webmethod-tp22663733p22676005.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.
Re: Servicemix + CXF: Issue with async request-response webmethod
- hopefully with attachments
Posted by Freeman Fang <fr...@gmail.com>.
Hi,
This maillinglist can't allow attachment.
So if you want to append attachment, using nabble or create a jira
ticket and append your testcase there.
For your testcase, I also want to see your client code, since jaxws
async invocation actually a matter of client side implementation, no
real difference on server side.
Freeman
Diefenbach Anne wrote:
>
> Sorry, the attachments got lost – hopefully it will work this time.
>
> * Von: * Diefenbach Anne [mailto:Diefenbach@fgan.de]
> *Gesendet:* Montag, 23. März 2009 17:25
> *An:* users@servicemix.apache.org
> *Betreff:* Servicemix + CXF: Issue with async request-response webmethod
>
> Hi,
>
> I have a webservice described by the following WSDL:
>
> < wsdl:message name = "statusReportMsg" >
>
> < wsdl:part element = "tns:statusReport" name = "body" />
>
> </ wsdl:message >
>
> < wsdl:message name = "requestAssistanceResponseMsg" >
>
> < wsdl:part element = "tns:requestAssistanceResponse" name = "body" />
>
> </ wsdl:message >
>
> < wsdl:message name = "requestAssistanceMsg" >
>
> < wsdl:part element = "tns:requestAssistance" name = "body" />
>
> </ wsdl:message >
>
> < wsdl:message name = "requestAssistanceFaultMsg" >
>
> < wsdl:part element = "tns:requestAssistanceFault" name = "error" />
>
> </ wsdl:message >
>
> < wsdl:portType name = "Einsatzleitung" >
>
> < wsdl:operation name = "requestAssistance" >
>
> < wsdl:input message = "tns:requestAssistanceMsg" />
>
> < wsdl:output message = "tns:requestAssistanceResponseMsg" />
>
> < wsdl:fault message = "tns:requestAssistanceFaultMsg" name = "error" />
>
> </ wsdl:operation >
>
> < wsdl:operation name = "statusReport" >
>
> < wsdl:input message = "tns:statusReportMsg" />
>
> </ wsdl:operation >
>
> < wsdl:operation name = "requestLongTermAssistance" >
>
> < jaxws:bindings >
>
> < jaxws:enableAsyncMapping > true </ jaxws:enableAsyncMapping >
>
> </ jaxws:bindings >
>
> < wsdl:input name = "requestLongTermAssistanceRequest" message =
> "tns:requestAssistanceMsg" />
>
> < wsdl:output name = "requestLongTermAssistanceResponse" message =
> "tns:requestAssistanceResponseMsg" />
>
> < wsdl:fault message = "tns:requestAssistanceFaultMsg" name = "error" />
>
> </ wsdl:operation >
>
> </ wsdl:portType >
>
> < wsdl:service name = "EinsatzleitungProvider" >
>
> < wsdl:port binding = "tns:Einsatzleitung_httpSoap" name =
> "Einsatzleitung_WS-I" >
>
> < soap:address location =
> "http://localhost:8888/soap/EinsatzleitungProvider" />
>
> </ wsdl:port >
>
> </ wsdl:service >
>
> < wsdl:binding name = "Einsatzleitung_httpSoap" type =
> "tns:Einsatzleitung" >
>
> < soap:binding style = "document" transport =
> "http://schemas.xmlsoap.org/soap/http" />
>
> < wsdl:operation name = "requestAssistance" >
>
> < soap:operation soapAction = "requestAssistance" />
>
> < wsdl:input >
>
> < soap:body use = "literal" />
>
> </ wsdl:input >
>
> < wsdl:output >
>
> < soap:body use = "literal" />
>
> </ wsdl:output >
>
> < wsdl:fault name = "error" >
>
> < soap:fault name = "error" use = "literal" />
>
> </ wsdl:fault >
>
> </ wsdl:operation >
>
> < wsdl:operation name = "statusReport" >
>
> < soap:operation soapAction = "statusReport" />
>
> < wsdl:input >
>
> < soap:body use = "literal" />
>
> </ wsdl:input >
>
> </ wsdl:operation >
>
> < wsdl:operation name = "requestLongTermAssistance" >
>
> < soap:operation soapAction = "requestLongTermAssistance" />
>
> < wsdl:input >
>
> < soap:body use = "literal" />
>
> </ wsdl:input >
>
> < wsdl:output >
>
> < soap:body use = "literal" />
>
> </ wsdl:output >
>
> </ wsdl:operation >
>
> </ wsdl:binding >
>
> I used this to implement my CXF provider and consumer with wsdl2java,
> everything worked fine. But now I have deployed my provider into
> Servicemix CXF SE, and as a result the asynchronous method
> requestLongTermAssistance is no longer invoked by the provider.
> Instead, when the request from the consumer arrives, the synchronous
> requestAssistance is invoked – always.
>
> Is this because both request messages are of type
> requestAssistanceMsg? Is there a way I can get this to work as is, or
> do I need to change my schema?
>
> I would be grateful for any help. Please find my service and client
> implementation as well as the Servicemix log attached.
>
> Regards, <<Einsatzleitung_EinsatzleitungWSI_Client.java>>
> <<EinsatzleitungImpl.java>> <<servicemix.log>>
>
> Anne Diefenbach
> - FKIE-KOM -
> *************************************************
> Forschungsgesellschaft für
> Angewandte Naturwissenschaften e. V. (FGAN)
> E-Mail: diefenbach@fgan.de <ma...@fgan.de>
> Web: www.fgan.de <http://www.fgan.de>
> ************************************************
>
Servicemix + CXF: Issue with async request-response webmethod - hopefully with attachments
Posted by Diefenbach Anne <Di...@fgan.de>.
Sorry, the attachments got lost - hopefully it will work this time.
________________________________
Von: Diefenbach Anne [mailto:Diefenbach@fgan.de]
Gesendet: Montag, 23. März 2009 17:25
An: users@servicemix.apache.org
Betreff: Servicemix + CXF: Issue with async request-response webmethod
Hi,
I have a webservice described by the following WSDL:
<wsdl:message name="statusReportMsg">
<wsdl:part element="tns:statusReport" name="body"/>
</wsdl:message>
<wsdl:message name="requestAssistanceResponseMsg">
<wsdl:part element="tns:requestAssistanceResponse" name="body"/>
</wsdl:message>
<wsdl:message name="requestAssistanceMsg">
<wsdl:part element="tns:requestAssistance" name="body"/>
</wsdl:message>
<wsdl:message name="requestAssistanceFaultMsg">
<wsdl:part element="tns:requestAssistanceFault" name="error"/>
</wsdl:message>
<wsdl:portType name="Einsatzleitung">
<wsdl:operation name="requestAssistance">
<wsdl:input message="tns:requestAssistanceMsg"/>
<wsdl:output message="tns:requestAssistanceResponseMsg"/>
<wsdl:fault message="tns:requestAssistanceFaultMsg" name="error"/>
</wsdl:operation>
<wsdl:operation name="statusReport">
<wsdl:input message="tns:statusReportMsg"/>
</wsdl:operation>
<wsdl:operation name="requestLongTermAssistance">
<jaxws:bindings>
<jaxws:enableAsyncMapping>true</jaxws:enableAsyncMapping>
</jaxws:bindings>
<wsdl:input name="requestLongTermAssistanceRequest" message="tns:requestAssistanceMsg"/>
<wsdl:output name="requestLongTermAssistanceResponse" message="tns:requestAssistanceResponseMsg"/>
<wsdl:fault message="tns:requestAssistanceFaultMsg" name="error"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:service name="EinsatzleitungProvider">
<wsdl:port binding="tns:Einsatzleitung_httpSoap" name="Einsatzleitung_WS-I">
<soap:address location="http://localhost:8888/soap/EinsatzleitungProvider"/>
</wsdl:port>
</wsdl:service>
<wsdl:binding name="Einsatzleitung_httpSoap" type="tns:Einsatzleitung">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="requestAssistance">
<soap:operation soapAction="requestAssistance"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="error">
<soap:fault name="error" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="statusReport">
<soap:operation soapAction="statusReport"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
</wsdl:operation>
<wsdl:operation name="requestLongTermAssistance">
<soap:operation soapAction="requestLongTermAssistance"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
I used this to implement my CXF provider and consumer with wsdl2java, everything worked fine. But now I have deployed my provider into Servicemix CXF SE, and as a result the asynchronous method requestLongTermAssistance is no longer invoked by the provider. Instead, when the request from the consumer arrives, the synchronous requestAssistance is invoked - always.
Is this because both request messages are of type requestAssistanceMsg? Is there a way I can get this to work as is, or do I need to change my schema?
I would be grateful for any help. Please find my service and client implementation as well as the Servicemix log attached.
Regards, <<Einsatzleitung_EinsatzleitungWSI_Client.java>> <<EinsatzleitungImpl.java>> <<servicemix.log>>
Anne Diefenbach
- FKIE-KOM -
*************************************************
Forschungsgesellschaft für
Angewandte Naturwissenschaften e. V. (FGAN)
E-Mail: diefenbach@fgan.de <ma...@fgan.de>
Web: www.fgan.de <http://www.fgan.de>
************************************************