Hallo, I also tried to invoke the same service with a Call object and explicitly set the type of the parameters. This time I got anothter exception: "org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize." Does anyone have an idea ...?
Bye, Dave -------------------- client code -------------------- public class TestClient2 { public static void main(String [] args) { try { String endpoint = "http://localhost:1234/axis1.2rc2/services/test"; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( new java.net.URL(endpoint) ); call.setOperationName(new QName("urn:TestNS", "printLongs") ); call.addParameter("in6", org.apache.axis.Constants.XSD_LONG, javax.xml.rpc.ParameterMode.IN); call.addParameter("in7", org.apache.axis.Constants.XSD_LONG, javax.xml.rpc.ParameterMode.IN); call.setReturnType(org.apache.axis.Constants.XSD_STRING); String response = (String) call.invoke( new Object[] { 1L, 1L } ); System.out.println(response); } catch (Exception e) { System.err.println(e.toString()); } } } -------------------- exception -------------------- AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeseriali zer.java:143) at org.apache.axis.encoding.DeserializationContext.startElement(Deserialization Context.java:1031) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165) at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java: 1140) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:238) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:386) at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:1 48) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:319) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java: 32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:450) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:285) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:653) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java: 301) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) .... > -----Original Message----- > From: David Werner [mailto:[EMAIL PROTECTED] > Sent: Monday, February 07, 2005 3:35 PM > To: [EMAIL PROTECTED] Apache. Org > Subject: Can't invoke method with multiple arguments > > > Hi, > > I haven't realized the whole problem, when I submitted the mail > with subject > 'Problem with deserealizing boolean'. In fact, I can't invoke any method > with more than a single argument, independent of the arguments' (simple) > type! A java.lang.IllegalArgumentException is thrown, because > only the first > value can be deseserialized: > > "Tried to invoke method public java.lang.String > test.server.TestSoapBindingImpl.printLongs(long,long) with arguments > java.lang.Long,null. The arguments do not match the signature." > > Here's an example of a simple web service, that takes two longs and should > return a string. > At the end of the mail I copied a part of Axis' log file, where only the > first argument of printLongs is properly converted before the exception is > thrown. > I would be really glad, if someone could give me a hint of what I'm doing > wrong. ;-) > > BTW, I'm using Axis 1.2RC2, Tomcat 5.0.19 and JDK 1.5 on Win XP. > > Bye, Dave > > ------------------------- > service implementation > ------------------------ > public class TestSoapBindingImpl implements test.server.Test{ > > public String printLongs(long long_1, long long_2){ > return "long_1 = " +long_1 +", long_2 = " +long_2; > } > > } > > -------------------- > client > -------------------- > public class TestClient { > > public static void main (String[] args) throws Exception { > TestService service = new TestServiceLocator(); > Test testProxy = service.gettest(); > > long longVal = 1L; > response = testProxy.printLongs(longVal, longVal); > System.out.println(response); > } > } > > -------------------- > SOAP messsage > -------------------- > <soapenv:Envelope > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> > <soapenv:Body> > <in6 xmlns="urn:TestNS">1</in6> > <in7 xmlns="urn:TestNS">1</in7> > </soapenv:Body> > </soapenv:Envelope> > > > ----------------- > Axis' log file > ----------------- > ... > 17555 org.apache.axis.message.SAXOutputter > - SAXOutputter.startElement ['urn:TestNS' in6] > 17555 org.apache.axis.i18n.ProjectResourceBundle > - org.apache.axis.i18n.resource::handleGetObject(startElem00) > 17555 org.apache.axis.encoding.SerializationContext > - Start element [urn:TestNS]:in6 > 17555 org.apache.axis.message.SAXOutputter > - SAXOutputter.characters ['1'] > 17766 org.apache.axis.message.SAXOutputter > - SAXOutputter.endElement ['urn:TestNS' in6] > 17766 org.apache.axis.i18n.ProjectResourceBundle > - org.apache.axis.i18n.resource::handleGetObject(endElem00) > 17766 org.apache.axis.encoding.SerializationContext > - End element in6 > 17766 org.apache.axis.i18n.ProjectResourceBundle > - org.apache.axis.i18n.resource::handleGetObject(empty00) > 17766 org.apache.axis.utils.NSStack > - NSPop (empty) > 17766 org.apache.axis.i18n.ProjectResourceBundle > - org.apache.axis.i18n.resource::handleGetObject(bodyIs00) > 17766 org.apache.axis.providers.java.RPCProvider > - body is <in6 xmlns="urn:TestNS">1</in6> > 17766 org.apache.axis.i18n.ProjectResourceBundle > - org.apache.axis.i18n.resource::handleGetObject(pushHandler00) > 17766 org.apache.axis.encoding.DeserializationContext > - Pushing handler [EMAIL PROTECTED] > 17766 org.apache.axis.encoding.DeserializationContext > - Enter: DeserializationContext::startPrefixMapping(, urn:TestNS) > 17766 org.apache.axis.utils.NSStack > - NSPush (32) > 17766 org.apache.axis.utils.NSStack > - NSPush (32) > 17766 org.apache.axis.encoding.DeserializationContext > - Exit: DeserializationContext::startPrefixMapping() > 17766 org.apache.axis.encoding.DeserializationContext > - Enter: DeserializationContext::startElement(urn:TestNS, in6) > 17766 org.apache.axis.message.RPCHandler > - Enter: RPCHandler.onStartChild() > 17766 org.apache.axis.i18n.ProjectResourceBundle > - org.apache.axis.i18n.resource::handleGetObject(typeFromAttr00) > 17766 org.apache.axis.message.RPCHandler > - Type from attributes is: null > 17876 org.apache.axis.message.RPCHandler > - Exit: RPCHandler.onStartChild() > 17886 org.apache.axis.i18n.ProjectResourceBundle > - org.apache.axis.i18n.resource::handleGetObject(pushHandler00) > 17886 org.apache.axis.encoding.DeserializationContext > - Pushing handler > [EMAIL PROTECTED] > 17886 org.apache.axis.encoding.DeserializationContext > - Exit: DeserializationContext::startElement() > 17886 org.apache.axis.encoding.DeserializationContext > - Enter: DeserializationContext::endElement(urn:TestNS, in6) > 17886 org.apache.axis.i18n.ProjectResourceBundle > - org.apache.axis.i18n.resource::handleGetObject(popHandler00) > 17886 org.apache.axis.encoding.DeserializationContext > - Popping handler > [EMAIL PROTECTED] > 17886 org.apache.axis.i18n.ProjectResourceBundle > - > org.apache.axis.i18n.resource::handleGetObject(setValueInTarget00) > 17886 org.apache.axis.encoding.DeserializerImpl > - Set value 1 in target > [EMAIL PROTECTED] > 17886 org.apache.axis.i18n.ProjectResourceBundle > - org.apache.axis.i18n.resource::handleGetObject(empty00) > 17886 org.apache.axis.utils.NSStack > - NSPop (empty) > 17886 org.apache.axis.encoding.DeserializationContext > - Popped element stack to org.apache.axis.message.SOAPBody:Body > 17886 org.apache.axis.encoding.DeserializationContext > - Exit: DeserializationContext::endElement() > 17886 org.apache.axis.i18n.ProjectResourceBundle > - org.apache.axis.i18n.resource::handleGetObject(convert00) > 17886 org.apache.axis.utils.JavaUtils > - Trying to convert java.lang.Long to long > 17886 org.apache.axis.i18n.ProjectResourceBundle > - org.apache.axis.i18n.resource::handleGetObject(value00) > 17886 org.apache.axis.providers.java.RPCProvider > - value: 1 > 17886 org.apache.axis.i18n.ProjectResourceBundle > - org.apache.axis.i18n.resource::handleGetObject(dispatchIAE00) > 17986 org.apache.axis.providers.java.RPCProvider > - Tried to invoke method public java.lang.String > test.server.TestSoapBindingImpl.printLongs(long,long) with arguments > java.lang.Long,null. The arguments do not match the signature. > java.lang.IllegalArgumentException > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorIm > pl.java:39 > ) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAc > cessorImpl > .java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at > org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvide > r.java:384 > ) > at > org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvi > der.java:2 > 81) > at > org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:319) > at > org.apache.axis.strategies.InvocationStrategy.visit(InvocationStra > tegy.java: > 32) > at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) > at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) > at > org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:450) > at org.apache.axis.server.AxisServer.invoke(AxisServer.java:285) > at > org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:653) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) > at > org.apache.axis.transport.http.AxisServletBase.service(AxisServlet > Base.java: > 301) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) > ... >