You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Марат Камалов <mk...@gmail.com> on 2011/02/02 15:55:40 UTC

SOAP/JMS + OneWay + WSA + FaultTo

Hi,

I have a problem with putting faultTo message in queue. I use SOAP/JMS. This
is my bean.xml

    <cxf:bus>
        <cxf:inInterceptors>
            <bean
class="org.apache.cxf.ws.addressing.soap.OneWayDecoupledFaultHandler"/>
        </cxf:inInterceptors>
        <cxf:outInterceptors>
            <bean
class="org.apache.cxf.ws.addressing.soap.OneWayDecoupledFaultHandler"/>
        </cxf:outInterceptors>
        <cxf:features>
            <wsa:addressing addressingRequired="true"
allowDuplicates="true"/>
            <cxf:logging />
        </cxf:features>
    </cxf:bus>

    <jms:conduit
        name="{
http://ws.poc.exigenservices.com/}MyWebServicePort.jms-conduit">
        <jms:address destinationStyle="queue"
            jndiConnectionFactoryName="connectionFactory"
jndiDestinationName="wsRequest" jndiReplyDestinationName="wsReply">
        </jms:address>
    </jms:conduit>

    <jms:destination
        name="{
http://ws.poc.exigenservices.com/}MyWebServicePort.jms-destination">
        <jms:address destinationStyle="queue"
            jndiConnectionFactoryName="connectionFactory"
jndiDestinationName="wsRequest" jndiReplyDestinationName="wsReply">
        </jms:address>
    </jms:destination>

    <jaxws:endpoint xmlns:tns="http://ws.poc.exigenservices.com/"
        id="mywebservice"
implementor="com.exigenservices.poc.ws.MyWebServiceImpl"
        wsdlLocation="wsdl/mywebservice.wsdl"
endpointName="tns:MyWebServicePort"
        serviceName="tns:MyWebServiceService"
        address="{
http://ws.poc.exigenservices.com/}MyWebServicePort.jms-destination">
        <jaxws:features>
            <wsa:addressing xmlns:wsa="http://cxf.apache.org/ws/addressing"
                addressingRequired="true" allowDuplicates="true"/>
            <bean class="org.apache.cxf.transport.jms.JMSConfigFeature"
                p:jmsConfig-ref="jmsConfig" />
            <bean class="org.apache.cxf.feature.LoggingFeature" />
        </jaxws:features>
    </jaxws:endpoint>

    <bean id="jmsDestinationResolver"

class="org.springframework.jms.support.destination.JndiDestinationResolver"
/>

    <bean id="jmsConfig"
class="org.apache.cxf.transport.jms.JMSConfiguration"
        p:destinationResolver-ref="jmsDestinationResolver"
        p:connectionFactory-ref="jmsConnectionFactory"
p:targetDestination="wsRequest" />

    <bean id="jmsConnectionFactory"
class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName">
            <value>connectionFactory</value>
        </property>
    </bean>

    <bean id="wsRequest"
class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName">
            <value>wsRequest</value>
        </property>
    </bean>

This is part from web service interface

    @Oneway
    @RequestWrapper(localName = "sayVoid", targetNamespace = "
http://ws.poc.exigenservices.com/", className =
"com.exigenservices.poc.ws.SayVoid")
    @WebMethod(action = "urn:SayVoid")
    public void sayVoid(
        @WebParam(name = "arg0", targetNamespace = "")
        java.lang.String arg0
    );

And realisation:

 public void sayVoid(java.lang.String arg0) {
        LOG.info("Executing operation sayVoid");
        System.out.println(arg0);
        throw new IllegalStateException("IllegalStateException...");
    }


This is my client side code:

        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        factory.setServiceClass(MyWebService.class);
        factory.setServiceName(new QName("http://ws.poc.exigenservices.com/
",
                "MyWebServiceService"));
        factory.setEndpointName(new QName("http://ws.poc.exigenservices.com/
",
                "MyWebServicePort"));
        factory.setWsdlURL(MyWebService.class.getClassLoader()
                .getResource("wsdl/mywebservice.wsdl").toString());
        factory.getFeatures().add(new WSAddressingFeature());
        factory.getFeatures().add(new LoggingFeature());

        AddressingBuilder builder =
AddressingBuilder.getAddressingBuilder();
        AddressingProperties maps = builder.newAddressingProperties();
        AttributedURIType messageID = new ObjectFactory()
                .createAttributedURIType();
        messageID.setValue(UUID.randomUUID().toString());
        maps.setMessageID(messageID);
        EndpointReferenceType endpointReferenceType = new ObjectFactory()
                .createEndpointReferenceType();
        AttributedURIType faultTo = new ObjectFactory()
                .createAttributedURIType();

faultTo.setValue("jms:jndi:wsFault?jndiConnectionFactoryName=connectionFactory");
        endpointReferenceType.setAddress(faultTo);
        maps.setFaultTo(endpointReferenceType);

        MyWebService client = (MyWebService) factory.create();
        ((BindingProvider) client).getRequestContext().put(
                JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES, maps);

        client.sayVoid(msg);
        System.out.println("MyEJB alert!!!");

I have this stack trace on server side:

Feb 2, 2011 5:50:41 PM
org.apache.cxf.service.factory.ReflectionServiceFactoryBean
buildServiceFromWSDL
INFO: Creating Service {
http://ws.poc.exigenservices.com/}MyWebServiceService from WSDL:
file:/C:/Users/MKamalov/workspace/poc-ws-client/bin/wsdl/mywebservice.wsdl
Feb 2, 2011 5:50:42 PM org.apache.cxf.interceptor.AbstractLoggingInterceptor
log
INFO: Outbound Message
---------------------------
ID: 16
Encoding: UTF-8
Content-Type: application/soap+xml; action="urn:SayVoid"
Headers:
Payload: <soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><Action
xmlns="http://www.w3.org/2005/08/addressing">urn:SayVoid</Action><MessageID
xmlns="http://www.w3.org/2005/08/addressing">6918963f-053f-46bc-8354-cbc4cf9b1728</MessageID><ReplyTo
xmlns="http://www.w3.org/2005/08/addressing"><Address>
http://www.w3.org/2005/08/addressing/none</Address></ReplyTo><FaultTo
xmlns="http://www.w3.org/2005/08/addressing"><Address>jms:jndi:wsFault?jndiConnectionFactoryName=connectionFactory</Address></FaultTo></soap:Header><soap:Body><ns2:sayVoid
xmlns:ns2="http://ws.poc.exigenservices.com/
"><arg0>helloworld</arg0></ns2:sayVoid></soap:Body></soap:Envelope>
--------------------------------------
Feb 2, 2011 5:50:42 PM
org.springframework.jms.connection.SingleConnectionFactory initConnection
INFO: Established shared JMS Connection:
weblogic.jms.client.WLConnectionImpl@5ac45e
MyEJB alert!!!
Feb 2, 2011 5:50:42 PM org.apache.cxf.interceptor.AbstractLoggingInterceptor
log
INFO: Inbound Message
----------------------------
ID: 17
Encoding: UTF-8
Content-Type: application/soap+xml; action="urn:SayVoid"; charset=UTF-8
Headers: {SOAPJMS_bindingVersion=[1.0], JMSXDeliveryCount=[1],
JMSMessageType=[text], SOAPJMS_contentType=[application/soap+xml;
action="urn:SayVoid"; charset=UTF-8], SOAPJMS_isFault=[false],
SOAPJMS_requestURI=[jms:jndi:wsRequest]}
Payload: <soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><Action
xmlns="http://www.w3.org/2005/08/addressing">urn:SayVoid</Action><MessageID
xmlns="http://www.w3.org/2005/08/addressing">6918963f-053f-46bc-8354-cbc4cf9b1728</MessageID><ReplyTo
xmlns="http://www.w3.org/2005/08/addressing"><Address>
http://www.w3.org/2005/08/addressing/none</Address></ReplyTo><FaultTo
xmlns="http://www.w3.org/2005/08/addressing"><Address>jms:jndi:wsFault?jndiConnectionFactoryName=connectionFactory</Address></FaultTo></soap:Header><soap:Body><ns2:sayVoid
xmlns:ns2="http://ws.poc.exigenservices.com/
"><arg0>helloworld</arg0></ns2:sayVoid></soap:Body></soap:Envelope>
--------------------------------------
Feb 2, 2011 5:50:42 PM org.apache.cxf.interceptor.AbstractLoggingInterceptor
log
INFO: Outbound Message
---------------------------
ID: 17
Encoding: UTF-8
Content-Type: application/soap+xml
Headers:
Payload: <soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><MessageID
xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:e7c46639-3af9-4fda-a24c-bbf0794fe2d7</MessageID><To
xmlns="http://www.w3.org/2005/08/addressing">
http://www.w3.org/2005/08/addressing/anonymous</To><ReplyTo xmlns="
http://www.w3.org/2005/08/addressing"><Address>
http://www.w3.org/2005/08/addressing/none</Address></ReplyTo><RelatesTo
xmlns="http://www.w3.org/2005/08/addressing">
http://www.w3.org/2005/08/addressing/unspecified
</RelatesTo></soap:Header><soap:Body></soap:Body></soap:Envelope>
--------------------------------------
Feb 2, 2011 5:50:42 PM com.exigenservices.poc.ws.MyWebServiceImpl sayVoid
INFO: Executing operation sayVoid
helloworld
Feb 2, 2011 5:50:42 PM org.apache.cxf.phase.PhaseInterceptorChain
doDefaultLogging
WARNING: Application {
http://ws.poc.exigenservices.com/}MyWebServiceService#{http://ws.poc.exigenservices.com/}sayVoidhas
thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: IllegalStateException...
    at
org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:155)
    at
org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:86)
    at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:121)
    at
org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:60)
    at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75)
    at
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
    at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at
org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
    at
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
    at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
    at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
    at
org.apache.cxf.transport.jms.JMSDestination.onMessage(JMSDestination.java:217)
    at
org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:535)
    at
org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:495)
    at
org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:467)
    at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:325)
    at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:263)
    at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
    at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050)
    at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.IllegalStateException: IllegalStateException...
    at
com.exigenservices.poc.ws.MyWebServiceImpl.sayVoid(MyWebServiceImpl.java:50)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at
org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)
    at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)
    ... 20 more
Feb 2, 2011 5:50:42 PM
org.apache.cxf.binding.soap.interceptor.Soap12FaultOutInterceptor$Soap12FaultOutInterceptorInternal
handleMessage
INFO: class
org.apache.cxf.binding.soap.interceptor.Soap12FaultOutInterceptor$Soap12FaultOutInterceptorInternalapplication/soap+xml;
action="urn:SayVoid"; charset=UTF-8
Feb 2, 2011 5:50:42 PM org.apache.cxf.interceptor.AbstractLoggingInterceptor
log
INFO: Outbound Message
---------------------------
ID: 17
Response-Code: 500
Encoding: UTF-8
Content-Type: application/soap+xml; action="urn:SayVoid"; charset=UTF-8
Headers: {SOAPJMS_bindingVersion=[1.0], JMSXDeliveryCount=[1],
JMSMessageType=[text], SOAPJMS_contentType=[application/soap+xml;
action="urn:SayVoid"; charset=UTF-8], SOAPJMS_isFault=[false],
SOAPJMS_requestURI=[jms:jndi:wsRequest]}
Payload: <soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><Action
xmlns="http://www.w3.org/2005/08/addressing">
http://schemas.xmlsoap.org/wsdl/soap/envelope/fault</Action><MessageID
xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:0f44bbe6-110c-46df-8934-2b731dac569b</MessageID><To
xmlns="http://www.w3.org/2005/08/addressing">jms:jndi:wsFault?jndiConnectionFactoryName=connectionFactory</To><RelatesTo
xmlns="http://www.w3.org/2005/08/addressing">6918963f-053f-46bc-8354-cbc4cf9b1728</RelatesTo></soap:Header><soap:Body><soap:Fault><soap:Code><soap:Value>soap:Receiver</soap:Value></soap:Code><soap:Reason><soap:Text
xml:lang="en">IllegalStateException...</soap:Text></soap:Reason></soap:Fault></soap:Body></soap:Envelope>
--------------------------------------
Feb 2, 2011 5:50:42 PM
org.springframework.jms.connection.SingleConnectionFactory initConnection
INFO: Established shared JMS Connection:
weblogic.jms.client.WLConnectionImpl@e75bc7
Feb 2, 2011 5:50:42 PM org.apache.cxf.interceptor.AbstractLoggingInterceptor
log
INFO: Inbound Message
----------------------------
ID: 18
Encoding: UTF-8
Content-Type: application/soap+xml; action="urn:SayVoid"; charset=UTF-8
Headers: {SOAPJMS_bindingVersion=[1.0], JMSXDeliveryCount=[1],
JMSMessageType=[text], SOAPJMS_contentType=[application/soap+xml;
action="urn:SayVoid"; charset=UTF-8], SOAPJMS_isFault=[true],
SOAPJMS_requestURI=[jms:jndi:wsRequest]}
Payload: <soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><Action
xmlns="http://www.w3.org/2005/08/addressing">
http://schemas.xmlsoap.org/wsdl/soap/envelope/fault</Action><MessageID
xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:0f44bbe6-110c-46df-8934-2b731dac569b</MessageID><To
xmlns="http://www.w3.org/2005/08/addressing">jms:jndi:wsFault?jndiConnectionFactoryName=connectionFactory</To><RelatesTo
xmlns="http://www.w3.org/2005/08/addressing">6918963f-053f-46bc-8354-cbc4cf9b1728</RelatesTo></soap:Header><soap:Body><soap:Fault><soap:Code><soap:Value>soap:Receiver</soap:Value></soap:Code><soap:Reason><soap:Text
xml:lang="en">IllegalStateException...</soap:Text></soap:Reason></soap:Fault></soap:Body></soap:Envelope>
--------------------------------------
Feb 2, 2011 5:50:42 PM org.apache.cxf.phase.PhaseInterceptorChain
doDefaultLogging
WARNING: Interceptor for {
http://ws.poc.exigenservices.com/}MyWebServiceService#{http://ws.poc.exigenservices.com/}sayVoidhas
thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Unexpected wrapper element {
http://www.w3.org/2003/05/soap-envelope}Fault found.   Expected {
http://ws.poc.exigenservices.com/}sayVoid.
    at
org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:106)
    at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
    at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
    at
org.apache.cxf.transport.jms.JMSDestination.onMessage(JMSDestination.java:217)
    at
org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:535)
    at
org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:495)
    at
org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:467)
    at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:325)
    at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:263)
    at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
    at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050)
    at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947)
    at java.lang.Thread.run(Thread.java:662)

I use CXF 2.3.2. Please help me to undestand what is wrong???

Re: SOAP/JMS + OneWay + WSA + FaultTo

Posted by mkamalov85 <mk...@gmail.com>.
Yes it is really one way, WSDL doesn't have <wsdl:output/> tag for this
operation.

I'll try to add a JIRA with my sample.

Thank you for your reply.
-- 
View this message in context: http://cxf.547215.n5.nabble.com/SOAP-JMS-OneWay-WSA-FaultTo-tp3367892p3373923.html
Sent from the cxf-user mailing list archive at Nabble.com.

Re: SOAP/JMS + OneWay + WSA + FaultTo

Posted by Daniel Kulp <dk...@apache.org>.
Is the sayVoid operation really a oneway?   Aka: wsdl specifies it as only 
having an input message?

If so, then the bug here is that a fault message is being sent anywhere.   
That should be just logged and swallowed.

Can you confirm it is a Oneway?  If so, can you create a JIRA.  At test case 
attached to it would be great.

Dan


On Wednesday 02 February 2011 9:55:40 am Марат Камалов wrote:
> Hi,
> 
> I have a problem with putting faultTo message in queue. I use SOAP/JMS.
> This is my bean.xml
> 
>     <cxf:bus>
>         <cxf:inInterceptors>
>             <bean
> class="org.apache.cxf.ws.addressing.soap.OneWayDecoupledFaultHandler"/>
>         </cxf:inInterceptors>
>         <cxf:outInterceptors>
>             <bean
> class="org.apache.cxf.ws.addressing.soap.OneWayDecoupledFaultHandler"/>
>         </cxf:outInterceptors>
>         <cxf:features>
>             <wsa:addressing addressingRequired="true"
> allowDuplicates="true"/>
>             <cxf:logging />
>         </cxf:features>
>     </cxf:bus>
> 
>     <jms:conduit
>         name="{
> http://ws.poc.exigenservices.com/}MyWebServicePort.jms-conduit">
>         <jms:address destinationStyle="queue"
>             jndiConnectionFactoryName="connectionFactory"
> jndiDestinationName="wsRequest" jndiReplyDestinationName="wsReply">
>         </jms:address>
>     </jms:conduit>
> 
>     <jms:destination
>         name="{
> http://ws.poc.exigenservices.com/}MyWebServicePort.jms-destination">
>         <jms:address destinationStyle="queue"
>             jndiConnectionFactoryName="connectionFactory"
> jndiDestinationName="wsRequest" jndiReplyDestinationName="wsReply">
>         </jms:address>
>     </jms:destination>
> 
>     <jaxws:endpoint xmlns:tns="http://ws.poc.exigenservices.com/"
>         id="mywebservice"
> implementor="com.exigenservices.poc.ws.MyWebServiceImpl"
>         wsdlLocation="wsdl/mywebservice.wsdl"
> endpointName="tns:MyWebServicePort"
>         serviceName="tns:MyWebServiceService"
>         address="{
> http://ws.poc.exigenservices.com/}MyWebServicePort.jms-destination">
>         <jaxws:features>
>             <wsa:addressing xmlns:wsa="http://cxf.apache.org/ws/addressing"
>                 addressingRequired="true" allowDuplicates="true"/>
>             <bean class="org.apache.cxf.transport.jms.JMSConfigFeature"
>                 p:jmsConfig-ref="jmsConfig" />
>             <bean class="org.apache.cxf.feature.LoggingFeature" />
>         </jaxws:features>
>     </jaxws:endpoint>
> 
>     <bean id="jmsDestinationResolver"
> 
> class="org.springframework.jms.support.destination.JndiDestinationResolver"
> />
> 
>     <bean id="jmsConfig"
> class="org.apache.cxf.transport.jms.JMSConfiguration"
>         p:destinationResolver-ref="jmsDestinationResolver"
>         p:connectionFactory-ref="jmsConnectionFactory"
> p:targetDestination="wsRequest" />
> 
>     <bean id="jmsConnectionFactory"
> class="org.springframework.jndi.JndiObjectFactoryBean">
>         <property name="jndiName">
>             <value>connectionFactory</value>
>         </property>
>     </bean>
> 
>     <bean id="wsRequest"
> class="org.springframework.jndi.JndiObjectFactoryBean">
>         <property name="jndiName">
>             <value>wsRequest</value>
>         </property>
>     </bean>
> 
> This is part from web service interface
> 
>     @Oneway
>     @RequestWrapper(localName = "sayVoid", targetNamespace = "
> http://ws.poc.exigenservices.com/", className =
> "com.exigenservices.poc.ws.SayVoid")
>     @WebMethod(action = "urn:SayVoid")
>     public void sayVoid(
>         @WebParam(name = "arg0", targetNamespace = "")
>         java.lang.String arg0
>     );
> 
> And realisation:
> 
>  public void sayVoid(java.lang.String arg0) {
>         LOG.info("Executing operation sayVoid");
>         System.out.println(arg0);
>         throw new IllegalStateException("IllegalStateException...");
>     }
> 
> 
> This is my client side code:
> 
>         JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
>         factory.setServiceClass(MyWebService.class);
>         factory.setServiceName(new QName("http://ws.poc.exigenservices.com/
> ",
>                 "MyWebServiceService"));
>         factory.setEndpointName(new
> QName("http://ws.poc.exigenservices.com/ ",
>                 "MyWebServicePort"));
>         factory.setWsdlURL(MyWebService.class.getClassLoader()
>                 .getResource("wsdl/mywebservice.wsdl").toString());
>         factory.getFeatures().add(new WSAddressingFeature());
>         factory.getFeatures().add(new LoggingFeature());
> 
>         AddressingBuilder builder =
> AddressingBuilder.getAddressingBuilder();
>         AddressingProperties maps = builder.newAddressingProperties();
>         AttributedURIType messageID = new ObjectFactory()
>                 .createAttributedURIType();
>         messageID.setValue(UUID.randomUUID().toString());
>         maps.setMessageID(messageID);
>         EndpointReferenceType endpointReferenceType = new ObjectFactory()
>                 .createEndpointReferenceType();
>         AttributedURIType faultTo = new ObjectFactory()
>                 .createAttributedURIType();
> 
> faultTo.setValue("jms:jndi:wsFault?jndiConnectionFactoryName=connectionFact
> ory"); endpointReferenceType.setAddress(faultTo);
>         maps.setFaultTo(endpointReferenceType);
> 
>         MyWebService client = (MyWebService) factory.create();
>         ((BindingProvider) client).getRequestContext().put(
>                 JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES, maps);
> 
>         client.sayVoid(msg);
>         System.out.println("MyEJB alert!!!");
> 
> I have this stack trace on server side:
> 
> Feb 2, 2011 5:50:41 PM
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean
> buildServiceFromWSDL
> INFO: Creating Service {
> http://ws.poc.exigenservices.com/}MyWebServiceService from WSDL:
> file:/C:/Users/MKamalov/workspace/poc-ws-client/bin/wsdl/mywebservice.wsdl
> Feb 2, 2011 5:50:42 PM
> org.apache.cxf.interceptor.AbstractLoggingInterceptor log
> INFO: Outbound Message
> ---------------------------
> ID: 16
> Encoding: UTF-8
> Content-Type: application/soap+xml; action="urn:SayVoid"
> Headers:
> Payload: <soap:Envelope
> xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><Action
> xmlns="http://www.w3.org/2005/08/addressing">urn:SayVoid</Action><MessageID
> xmlns="http://www.w3.org/2005/08/addressing">6918963f-053f-46bc-8354-cbc4cf
> 9b1728</MessageID><ReplyTo
> xmlns="http://www.w3.org/2005/08/addressing"><Address>
> http://www.w3.org/2005/08/addressing/none</Address></ReplyTo><FaultTo
> xmlns="http://www.w3.org/2005/08/addressing"><Address>jms:jndi:wsFault?jndi
> ConnectionFactoryName=connectionFactory</Address></FaultTo></soap:Header><s
> oap:Body><ns2:sayVoid xmlns:ns2="http://ws.poc.exigenservices.com/
> "><arg0>helloworld</arg0></ns2:sayVoid></soap:Body></soap:Envelope>
> --------------------------------------
> Feb 2, 2011 5:50:42 PM
> org.springframework.jms.connection.SingleConnectionFactory initConnection
> INFO: Established shared JMS Connection:
> weblogic.jms.client.WLConnectionImpl@5ac45e
> MyEJB alert!!!
> Feb 2, 2011 5:50:42 PM
> org.apache.cxf.interceptor.AbstractLoggingInterceptor log
> INFO: Inbound Message
> ----------------------------
> ID: 17
> Encoding: UTF-8
> Content-Type: application/soap+xml; action="urn:SayVoid"; charset=UTF-8
> Headers: {SOAPJMS_bindingVersion=[1.0], JMSXDeliveryCount=[1],
> JMSMessageType=[text], SOAPJMS_contentType=[application/soap+xml;
> action="urn:SayVoid"; charset=UTF-8], SOAPJMS_isFault=[false],
> SOAPJMS_requestURI=[jms:jndi:wsRequest]}
> Payload: <soap:Envelope
> xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><Action
> xmlns="http://www.w3.org/2005/08/addressing">urn:SayVoid</Action><MessageID
> xmlns="http://www.w3.org/2005/08/addressing">6918963f-053f-46bc-8354-cbc4cf
> 9b1728</MessageID><ReplyTo
> xmlns="http://www.w3.org/2005/08/addressing"><Address>
> http://www.w3.org/2005/08/addressing/none</Address></ReplyTo><FaultTo
> xmlns="http://www.w3.org/2005/08/addressing"><Address>jms:jndi:wsFault?jndi
> ConnectionFactoryName=connectionFactory</Address></FaultTo></soap:Header><s
> oap:Body><ns2:sayVoid xmlns:ns2="http://ws.poc.exigenservices.com/
> "><arg0>helloworld</arg0></ns2:sayVoid></soap:Body></soap:Envelope>
> --------------------------------------
> Feb 2, 2011 5:50:42 PM
> org.apache.cxf.interceptor.AbstractLoggingInterceptor log
> INFO: Outbound Message
> ---------------------------
> ID: 17
> Encoding: UTF-8
> Content-Type: application/soap+xml
> Headers:
> Payload: <soap:Envelope
> xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><MessageI
> D
> xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:e7c46639-3af9-4fda-a
> 24c-bbf0794fe2d7</MessageID><To
> xmlns="http://www.w3.org/2005/08/addressing">
> http://www.w3.org/2005/08/addressing/anonymous</To><ReplyTo xmlns="
> http://www.w3.org/2005/08/addressing"><Address>
> http://www.w3.org/2005/08/addressing/none</Address></ReplyTo><RelatesTo
> xmlns="http://www.w3.org/2005/08/addressing">
> http://www.w3.org/2005/08/addressing/unspecified
> </RelatesTo></soap:Header><soap:Body></soap:Body></soap:Envelope>
> --------------------------------------
> Feb 2, 2011 5:50:42 PM com.exigenservices.poc.ws.MyWebServiceImpl sayVoid
> INFO: Executing operation sayVoid
> helloworld
> Feb 2, 2011 5:50:42 PM org.apache.cxf.phase.PhaseInterceptorChain
> doDefaultLogging
> WARNING: Application {
> http://ws.poc.exigenservices.com/}MyWebServiceService#{http://ws.poc.exigen
> services.com/}sayVoidhas thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: IllegalStateException...
>     at
> org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.
> java:155) at
> org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMe
> thodInvoker.java:86) at
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:
> 121) at
> org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:60)
>     at
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:
> 75) at
> org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerIn
> terceptor.java:58) at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
>     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>     at
> org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.ja
> va:37) at
> org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceI
> nvokerInterceptor.java:106) at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai
> n.java:255) at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationO
> bserver.java:113) at
> org.apache.cxf.transport.jms.JMSDestination.onMessage(JMSDestination.java:2
> 17) at
> org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeL
> istener(AbstractMessageListenerContainer.java:535) at
> org.springframework.jms.listener.AbstractMessageListenerContainer.invokeLis
> tener(AbstractMessageListenerContainer.java:495) at
> org.springframework.jms.listener.AbstractMessageListenerContainer.doExecute
> Listener(AbstractMessageListenerContainer.java:467) at
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.do
> ReceiveAndExecute(AbstractPollingMessageListenerContainer.java:325) at
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.re
> ceiveAndExecute(AbstractPollingMessageListenerContainer.java:263) at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessa
> geListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
> at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessa
> geListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1
> 050) at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessa
> geListenerInvoker.run(DefaultMessageListenerContainer.java:947) at
> java.lang.Thread.run(Thread.java:662)
> Caused by: java.lang.IllegalStateException: IllegalStateException...
>     at
> com.exigenservices.poc.ws.MyWebServiceImpl.sayVoid(MyWebServiceImpl.java:50
> ) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:3
> 9) at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp
> l.java:25) at java.lang.reflect.Method.invoke(Method.java:597)
>     at
> org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractIn
> voker.java:173) at
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:
> 89) ... 20 more
> Feb 2, 2011 5:50:42 PM
> org.apache.cxf.binding.soap.interceptor.Soap12FaultOutInterceptor$Soap12Fau
> ltOutInterceptorInternal handleMessage
> INFO: class
> org.apache.cxf.binding.soap.interceptor.Soap12FaultOutInterceptor$Soap12Fau
> ltOutInterceptorInternalapplication/soap+xml; action="urn:SayVoid";
> charset=UTF-8
> Feb 2, 2011 5:50:42 PM
> org.apache.cxf.interceptor.AbstractLoggingInterceptor log
> INFO: Outbound Message
> ---------------------------
> ID: 17
> Response-Code: 500
> Encoding: UTF-8
> Content-Type: application/soap+xml; action="urn:SayVoid"; charset=UTF-8
> Headers: {SOAPJMS_bindingVersion=[1.0], JMSXDeliveryCount=[1],
> JMSMessageType=[text], SOAPJMS_contentType=[application/soap+xml;
> action="urn:SayVoid"; charset=UTF-8], SOAPJMS_isFault=[false],
> SOAPJMS_requestURI=[jms:jndi:wsRequest]}
> Payload: <soap:Envelope
> xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><Action
> xmlns="http://www.w3.org/2005/08/addressing">
> http://schemas.xmlsoap.org/wsdl/soap/envelope/fault</Action><MessageID
> xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:0f44bbe6-110c-46df-89
> 34-2b731dac569b</MessageID><To
> xmlns="http://www.w3.org/2005/08/addressing">jms:jndi:wsFault?jndiConnecti
> onFactoryName=connectionFactory</To><RelatesTo
> xmlns="http://www.w3.org/2005/08/addressing">6918963f-053f-46bc-8354-cbc4c
> f9b1728</RelatesTo></soap:Header><soap:Body><soap:Fault><soap:Code><soap:Va
> lue>soap:Receiver</soap:Value></soap:Code><soap:Reason><soap:Text
> xml:lang="en">IllegalStateException...</soap:Text></soap:Reason></soap:Fau
> lt></soap:Body></soap:Envelope> --------------------------------------
> Feb 2, 2011 5:50:42 PM
> org.springframework.jms.connection.SingleConnectionFactory initConnection
> INFO: Established shared JMS Connection:
> weblogic.jms.client.WLConnectionImpl@e75bc7
> Feb 2, 2011 5:50:42 PM
> org.apache.cxf.interceptor.AbstractLoggingInterceptor log
> INFO: Inbound Message
> ----------------------------
> ID: 18
> Encoding: UTF-8
> Content-Type: application/soap+xml; action="urn:SayVoid"; charset=UTF-8
> Headers: {SOAPJMS_bindingVersion=[1.0], JMSXDeliveryCount=[1],
> JMSMessageType=[text], SOAPJMS_contentType=[application/soap+xml;
> action="urn:SayVoid"; charset=UTF-8], SOAPJMS_isFault=[true],
> SOAPJMS_requestURI=[jms:jndi:wsRequest]}
> Payload: <soap:Envelope
> xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><Action
> xmlns="http://www.w3.org/2005/08/addressing">
> http://schemas.xmlsoap.org/wsdl/soap/envelope/fault</Action><MessageID
> xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:0f44bbe6-110c-46df-89
> 34-2b731dac569b</MessageID><To
> xmlns="http://www.w3.org/2005/08/addressing">jms:jndi:wsFault?jndiConnecti
> onFactoryName=connectionFactory</To><RelatesTo
> xmlns="http://www.w3.org/2005/08/addressing">6918963f-053f-46bc-8354-cbc4c
> f9b1728</RelatesTo></soap:Header><soap:Body><soap:Fault><soap:Code><soap:Va
> lue>soap:Receiver</soap:Value></soap:Code><soap:Reason><soap:Text
> xml:lang="en">IllegalStateException...</soap:Text></soap:Reason></soap:Fau
> lt></soap:Body></soap:Envelope> --------------------------------------
> Feb 2, 2011 5:50:42 PM org.apache.cxf.phase.PhaseInterceptorChain
> doDefaultLogging
> WARNING: Interceptor for {
> http://ws.poc.exigenservices.com/}MyWebServiceService#{http://ws.poc.exigen
> services.com/}sayVoidhas thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: Unexpected wrapper element {
> http://www.w3.org/2003/05/soap-envelope}Fault found.   Expected {
> http://ws.poc.exigenservices.com/}sayVoid.
>     at
> org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteral
> InInterceptor.java:106) at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai
> n.java:255) at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationO
> bserver.java:113) at
> org.apache.cxf.transport.jms.JMSDestination.onMessage(JMSDestination.java:2
> 17) at
> org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeL
> istener(AbstractMessageListenerContainer.java:535) at
> org.springframework.jms.listener.AbstractMessageListenerContainer.invokeLis
> tener(AbstractMessageListenerContainer.java:495) at
> org.springframework.jms.listener.AbstractMessageListenerContainer.doExecute
> Listener(AbstractMessageListenerContainer.java:467) at
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.do
> ReceiveAndExecute(AbstractPollingMessageListenerContainer.java:325) at
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.re
> ceiveAndExecute(AbstractPollingMessageListenerContainer.java:263) at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessa
> geListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
> at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessa
> geListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1
> 050) at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessa
> geListenerInvoker.run(DefaultMessageListenerContainer.java:947) at
> java.lang.Thread.run(Thread.java:662)
> 
> I use CXF 2.3.2. Please help me to undestand what is wrong???

-- 
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog

Re: SOAP/JMS + OneWay + WSA + FaultTo

Posted by Alexander Kormushin <ko...@gmail.com>.
Yep, experiencing same problem with CXF and already despaired to make it
work.

Any help would be highly appreciated!
-- 
View this message in context: http://cxf.547215.n5.nabble.com/SOAP-JMS-OneWay-WSA-FaultTo-tp3367892p3371166.html
Sent from the cxf-user mailing list archive at Nabble.com.