Hallo Ioan,

I'm quite stunned by this bug! Handling multiple parameters should be a
basic functionality.
In any case, many thanks for your reply! :-)

Ciao, Dave


> -----Original Message-----
> From: Ioan Berbece [mailto:[EMAIL PROTECTED]
> Sent: Monday, February 07, 2005 8:50 PM
> To: [EMAIL PROTECTED]
> Subject: RE: Can't invoke method with multiple arguments
>
>
> Hi Dave,
>
> Last time I checked Axis 1.1 and Axis 1.2 RC2 didn't handle multiple
> message parts in a doc/lit web service. Take a look at this bug:
> http://issues.apache.org/jira/browse/AXIS-621
> which has an attachment for an attempted fix in Call.java (client side).
> I also attempted a fix for the server side in RPCProvider.java, but I'm
> not sure whether the fix is a proper one (although the functional tests
> pass with the fix in place in Axis 1.2 RC2).
> I have to say here that I'm a bit disappointed to see that this bug (and
> I believe there are others related) hasn't received the attention it
> requires (right now it seems it spans two versions: 1.1 and 1.2 - not
> sure what the story is in Axis 2.0).
> If you want my proposed fix email me privately.
>
> Thanks,
> IB
>
> -----Original Message-----
> From: David Werner [mailto:[EMAIL PROTECTED]
> Sent: February 7, 2005 1:50 PM
> To: [EMAIL PROTECTED]
> Subject: RE: Can't invoke method with multiple arguments
>
> 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(SimpleDeser
> iali
> zer.java:143)
>   at
> org.apache.axis.encoding.DeserializationContext.startElement(Deserializa
> tion
> Context.java:1031)
>   at
> org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:
> 165)
>   at
> org.apache.axis.message.MessageElement.publishToHandler(MessageElement.j
> ava:
> 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.ja
> va:1
> 48)
>   at
> org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:319
> )
>   at
> org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.j
> ava:
> 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.j
> ava:
> 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)
> >   ...
> >
>
>

Reply via email to