Hi I am seeing a problem invoking a jsr-181 pojo method that has multiple arguments via the HTTP binding component using Servicemix 3.1.2 deployed in Tomcat.
The pojo looks like: package test; import javax.jws.WebMethod; import javax.jws.WebService; @WebService public class SimpleServiceImpl { @WebMethod public String echoOneParam(String value) { return value; } @WebMethod public String echoTwoParams(String value1, String value2) { return value1 + " " + value2; } } This is built into a JSR-181 SE SU with xbean.xml: <beans xmlns:jsr181="http://servicemix.apache.org/jsr181/1.0" xmlns:test="http://test"> <jsr181:endpoint pojoClass="test.SimpleServiceImpl" /> </beans> and is exposed over SOAP using a HTTP BC SU with xbean.xml: <beans xmlns:http="http://servicemix.apache.org/http/1.0" xmlns:test="http://test"> <http:endpoint service="test:SimpleServiceImpl" endpoint="soap" soap="true" targetService="test:SimpleServiceImpl" role="consumer" locationURI="http://0.0.0.0:8000/test/simple" defaultMep="http://www.w3.org/2004/08/wsdl/in-out" /> </beans> Using a SOAP client (e.g. SOAP UI), calling echoOneParam works fine. Calling echoTwoParams returns the following fault: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <soapenv:Fault> <faultcode>soapenv:Client</faultcode> <faultstring>Not enough message parts were received for the operation.</faultstring> <detail> <stack>org.codehaus.xfire.fault.XFireFault: Not enough message parts were received for the operation. at org.codehaus.xfire.service.binding.ServiceInvocationHandler.fillInHolders(ServiceInvocationHandler.java:240) at org.codehaus.xfire.service.binding.ServiceInvocationHandler.invoke(ServiceInvocationHandler.java:73) at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131) at org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64) at org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38) at org.apache.servicemix.jsr181.Jsr181ExchangeProcessor.process(Jsr181ExchangeProcessor.java:114) at org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489) at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441) at org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46) at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:595) at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174) 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:134) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690) at java.lang.Thread.run(Thread.java:595)</stack> </detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope> Strangely, if the SOAP request is sent with an additional parameter element, e.g. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:test="http://test" xmlns:icmf="http://icmf.interactive.sky.com"> <soapenv:Header/> <soapenv:Body> <test:echoTwoParams> <test:value1>A</test:value1> <test:value2>B</test:value2> <test:value3>C</test:value3> </test:echoTwoParams> </soapenv:Body> </soapenv:Envelope> this works, with the result being "A C" suggesting that parsing of the SOAP body is going wrong and skipping elements. Has anyone seen this issue? Any help would be appreciated as I've been struggling with this one for a few days now. Thanks Pan -- View this message in context: http://www.nabble.com/JSR-181-Pojo-with-multiple-method-arguments-tf4723809s12049.html#a13505724 Sent from the ServiceMix - User mailing list archive at Nabble.com.