You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by Panikos <Pa...@BSKYB.COM> on 2007/10/31 11:02:22 UTC

JSR-181 Pojo with multiple method arguments

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.