假设我在我的Web服务中声明了以下方法:
@WebMethod()
public Long addNewApplication(String applicationName) throws ServiceManagerException {
// implementation
}
@WebMethod()
public Long addNewApplication(String applicationName, ApplicationState status) throws ServiceManagerException {
// implementation
}
问题是以上不起作用,我得到以下异常:
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)
如果我重命名方法以便它们具有不同的名称,那么一切都有效。是否可以在Web Service中使用重载方法?如果是,那怎么办?
答案 0 :(得分:7)
尝试使用操作名称,这应该在Java中正常工作:
@WebMethod(operationName="newName")
答案 1 :(得分:4)
据我所知,有一些SOAP技巧可以实现重载,但不是应该如何 - 不要使用重载来实现Web服务。
答案 2 :(得分:2)
这可以通过为以上两个函数
提供如下的不同(唯一)MessageName属性来完成[WebMethod (MessageName="ABC")]