[ 
https://issues.apache.org/jira/browse/CXF-5434?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13841115#comment-13841115
 ] 

Wouter Dhaeze commented on CXF-5434:
------------------------------------

Dear mr. Kulp, thanks for the quick response.

I've attached three files:
1. I attached my eclipse project which you can use to reproduce the problem. 
It defines a oneway endpoint which listens to a queue (activeMQ 5.7.0). 
I'm compiling and running using java7 (u45) and deploying on tomcat 7.0.35. 
I'm using a reference to the default cxf distribution 2.7.8.
It also contains a unit test which creates a cxf client that will publish a 
message to the queue.
2. A log trace of my server in which the CXF stack is printed as well as the 
error message
3. I filtered the incoming soap message. It contains a header field with 
ReplyTo "none" which is normal I guess since we call a oneway method. 

Please be aware that the method is annotated with "javax.jws.Oneway" and not 
"import org.apache.cxf.jaxrs.ext.Oneway". But I'm quite sure this is correct 
since the latter annotation is for REST services.

If you remove the wsa:addressing feature from the client, the server consumes 
the message perfectly. The biggest difference however is the cxf stack. In the 
failing test there are a lot more filters that are applied.

> IllegalStateException calling Oneway method using JMS and WSA
> -------------------------------------------------------------
>
>                 Key: CXF-5434
>                 URL: https://issues.apache.org/jira/browse/CXF-5434
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-WS Runtime
>    Affects Versions: 2.7.5, 2.7.7
>            Reporter: Wouter Dhaeze
>         Attachments: CXFTestServer.zip, incoming_soap_message_01.txt, 
> server_logs_01.log
>
>
> When a client is calling a oneway method, the endpoint method is never called 
> due to an IllegalStateException, when the endpoint has WS-Addressing policy 
> enabled and the endpoint is called through JMS (activeMQ)
> {code}
> java.lang.IllegalStateException: IllegalStateException invoking 
> http://www.w3.org/2005/08/addressing/none: Already connected
>       at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>       at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
>       at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown 
> Source)
>       at java.lang.reflect.Constructor.newInstance(Unknown Source)
>       at 
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1338)
>       at 
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1327)
>       at 
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
>       at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:622)
>       at 
> org.apache.cxf.interceptor.OneWayProcessorInterceptor.handleMessage(OneWayProcessorInterceptor.java:126)
>       at 
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
>       at 
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>       at 
> org.apache.cxf.transport.jms.JMSDestination.onMessage(JMSDestination.java:235)
>       at 
> org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:536)
>       at 
> org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:496)
>       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:1059)
>       at 
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1051)
>       at 
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:948)
>       at java.lang.Thread.run(Unknown Source)
> Caused by: java.lang.IllegalStateException: Already connected
>       at java.net.HttpURLConnection.setFixedLengthStreamingMode(Unknown 
> Source)
>       at 
> org.apache.cxf.transport.http.URLConnectionHTTPConduit$URLConnectionWrappedOutputStream.setFixedLengthStreamingMode(URLConnectionHTTPConduit.java:272)
>       at 
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.thresholdNotReached(HTTPConduit.java:1085)
>       at 
> org.apache.cxf.io.AbstractThresholdOutputStream.close(AbstractThresholdOutputStream.java:99)
>       at 
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1301)
>       ... 15 more
> {code}



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to