Uploaded image for project: 'ServiceMix Components'
  1. ServiceMix Components
  2. SMXCOMP-760

New HTTP endpoints ignore defaultMep attribute

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • servicemix-http-2008.01, servicemix-http-2009.01, servicemix-http-2009.02, servicemix-http-2010.01
    • 2013.02
    • servicemix-http
    • 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).

      Attachments

        Activity

          People

            jb@nanthrax.net Jean-Baptiste Onofré
            jb@nanthrax.net Jean-Baptiste Onofré
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated: