Jonathan Taws
Jonathan Taws

Reputation: 1188

Axis 2 WebService : wrong number of arguments when invoking method

I'm trying to set up a webservice using axis2. I've created a Dynamic Web Projet under Eclipse, using Apache Tomcat 7 and the dynamic web version 2.5. I've added the Axis 2 Facets to the configuration.

I have the following class :

package com.jo.ws;

public class Test {
    public int add(int a, int b) {
        return a + b;
    }
}

I then created a WebService for the projet, using the Bottom up Java bean Web Service, and adding my Test class to the service implementation. I chose the "Start Service" in the slider, and changed Apache Axis in the configuration to Axis 2. I then generated a default services.xml file using the default option.

I can access my projet on the web at the following adress :

http://localhost:8888/Axis2WS/

This displays the Axis 2 page, and I can see my service is active

 http://localhost:8888/Axis2WS/services/listServices 

The wsdl is correctly generated and displayed

I can post it if needed.

But now if I do this :

http://localhost:8888/Axis2WS/services/Test?method=add&a=2&b=1

I get this :

<soapenv:Reason xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Text xml:lang="en-US">wrong number of arguments</soapenv:Text>
</soapenv:Reason>

I also got the error in my Eclipse console log, with the following stack trace :

[ERROR] wrong number of arguments
java.lang.IllegalArgumentException: wrong number of arguments
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:178)
    at     org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.ja    va:117)
    at     org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMe    ssageReceiver.java:40)
    at     org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114    )
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)
    at     org.apache.axis2.transport.http.util.RESTUtil.invokeAxisEngine(RESTUtil.java:144)
    at     org.apache.axis2.transport.http.util.RESTUtil.processURLRequest(RESTUtil.java:139)
    at     org.apache.axis2.transport.http.AxisServlet$RestRequestProcessor.processURLRequest(AxisServ    let.java:837)
    at org.apache.axis2.transport.http.AxisServlet.doGet(AxisServlet.java:273)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at     org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.jav    a:303)
    at     org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at     org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at     org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at     org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at     org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at     org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    at     org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:    607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Any idea what I'm doing wrong ?

Thanks for your help !

Upvotes: 0

Views: 2937

Answers (1)

Jonathan Taws
Jonathan Taws

Reputation: 1188

The error came from the url I was typing in the browser.. The right url to invoke the method is :

http://localhost:8888/Axis2WS/services/Test/add?a=3&b=2

You need to replace the "?" with a "/" before the name of the method, and then write your parameters after you've added a "?" after the name of your method

Upvotes: 1

Related Questions