Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I overload method in Java web-service?

Suppose I have the following methods declared in my web service:

@WebMethod()
public Long addNewApplication(String applicationName) throws ServiceManagerException {
    // implementation
}

@WebMethod()
public Long addNewApplication(String applicationName, ApplicationState status) throws ServiceManagerException {
    // implementation
}

The problem is that above doesn't work, I get the following exception:

org.springframework.remoting.jaxws.JaxWsSoapFaultException: Cannot find dispatch method for Request=[SOAPAction="",Payload={http://example.org/applicationManager}addNewApplication]; nested exception is javax.xml.ws.soap.SOAPFaultException: Cannot find dispatch method for Request=[SOAPAction="",Payload={http://example.org/applicationManager}addNewApplication]
at org.springframework.remoting.jaxws.JaxWsPortClientInterceptor.doInvoke(JaxWsPortClientInterceptor.java:503)
at org.springframework.remoting.jaxws.JaxWsPortClientInterceptor.invoke(JaxWsPortClientInterceptor.java:487)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy123.addNewApplication(Unknown Source)

If I rename methods so they will have different names, everything works. Is it possible to have overloaded methods in Web Service? If yes, then how?

like image 526
uthark Avatar asked Oct 18 '10 08:10

uthark


2 Answers

Try using the Operation Name and this should work properly in Java:

@WebMethod(operationName="newName")
like image 143
Arun Avatar answered Oct 09 '22 21:10

Arun


As far as I recall there were some SOAP tricks that enables something like overloading, but it's not how it should be - don't use overloading for web services.

like image 39
Bozho Avatar answered Oct 09 '22 19:10

Bozho