Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
servicemix-http-2008.01, servicemix-http-2009.01, servicemix-http-2009.02, servicemix-http-2010.01
-
None
Description
Even if I define a xbean.xml like this:
<http:soap-consumer service="test:service" endpoint="http"
targetService="test:service"
targetEndpoint="bean"
locationURI="http://0.0.0.0:9091/smx/test-service/"
wsdl="classpath:test.wsdl"
defaultMep="http://www.w3.org/2004/08/wsdl/in-only"
validateWsdl="no"/>
the HTTP endpoint send a InOut MessageExcchange and not an InOnly:
Received exchange: InOut[
id: ID:127.0.0.1-12941561c5d-29:0
status: Active
role: provider
...
]
which cause problem if the target endpoint set the ExchangeStatus to DONE:
javax.jbi.messaging.MessagingException: illegal exchange status: done
at org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:626)
at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:395)
at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:441)
at org.apache.servicemix.common.EndpointDeliveryChannel.send(EndpointDeliveryChannel.java:89)
at org.apache.servicemix.bean.BeanEndpoint$PojoChannel.send(BeanEndpoint.java:631)
at com.fimasys.fsb.tests.ListenerBean.onMessageExchange(ListenerBean.java:19)
at org.apache.servicemix.bean.BeanEndpoint.onProviderExchange(BeanEndpoint.java:230)
at org.apache.servicemix.bean.BeanEndpoint.process(BeanEndpoint.java:217)
at org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:627)
at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:581)
at org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:535)
at org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:632)
at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:185)
at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
The new HTTP endpoint should take care of the defaultMep attribute and react as expected (returning a empty SOAP message and returning just HTTP 200).