What is the programatic significance of the soap="true" attribute when
creating a consumer endpoint in the xbean.xml file for the HTTP BC?

Here is some background. Right now we have the HTTP BC and JSR181 components
installed. This is based off the soap-binding example. We have a simple
webservice being invoked using the sample html file, who sends SOAP to the
HTTP BC, who then sends it to the JSR181 component, who then invokes our
simple web service.
When I take the soap="true" out of the consumer endpoint I get the following
error:


org.codehaus.xfire.fault.XFireFault: Invalid operation:
{http://schemas.xmlsoap.org/soap/envelope/}Envelope
        at
org.codehaus.xfire.service.binding.WrappedBinding.readMessage(WrappedBinding.java:41)
        at
org.codehaus.xfire.soap.handler.SoapBodyHandler.invoke(SoapBodyHandler.java:42)
        at
org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:110)
        at
org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:61)
        at
org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
        at
org.apache.servicemix.jsr181.Jsr181ExchangeProcessor.process(Jsr181ExchangeProcessor.java:79)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:397)
        at
org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:42)
        at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:622)
        at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:168)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:226)
        at
org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:291)
        at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Thread.java:595)

One might then say, "leave the soap="true" idiot." And I would agree, but
unfortunately I can't. Right now we are invoking a JSR181 WebService between
two JBI containers. What we are trying to achieve is compressing the SOAP
being sent between JBI container 1 and JBI container 2. In order to do that
the consumer endpoint for JBI container 2 must not contain the soap="true"
attribute.
On JBI container 2 the workflow goes: HTTP BC --> Compression Component (to
decompress) --> JSR181. Our logs show that the content being set by the
Compression Component is the correct SOAP that is being sent to the JSR181
component. But the JSR181 component returns the exact stack trace above.
Here is the workflow that does work:
HTTP BC --> JSR181.
Here is our new workflow with compression in the middle that doesn't work:
HTTP BC --> Compression -- JSR181

Our assumption is that since the SOAP is correct, that the HTTP BC is
setting some property or doing something special that the JSR181 component
is requiring. And since we are injecting our Compression component in the
middle, we aren't setting that special something that the JSR181 component
needs.

Any ideas or suggestions?
-- 
View this message in context: 
http://www.nabble.com/Problem-with-JSR181-Component-tf2128179.html#a5872790
Sent from the ServiceMix - User forum at Nabble.com.

Reply via email to