如何在JavaWeb服务中重载方法?

如何在JavaWeb服务中重载方法?,java,web-services,spring,jax-ws,Java,Web Services,Spring,Jax Ws,假设我在web服务中声明了以下方法: @WebMethod() public Long addNewApplication(String applicationName) throws ServiceManagerException { // implementation } @WebMethod() public Long addNewApplication(String applicationName, ApplicationState status) throws Service

假设我在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服务中是否可能存在重载方法?如果是,那么怎么做?

据我所知,有一些SOAP技巧可以启用重载之类的功能,但事实并非如此——不要对web服务使用重载。

这可以通过为上述两个函数提供不同的(唯一的)MessageName属性来实现,如下所示

[WebMethod (MessageName="ABC")]

尝试使用操作名称,这在Java中应该可以正常工作:

@WebMethod(operationName="newName")

嘿。。。目前,我被迫重命名这些方法以消除重载。但这不是一个非常优雅的解决方案。@uthark:在不支持重载的WSDL环境中,有人可能会说它实际上是最优雅的解决方案。@Fabian Yep,实际上在发布问题之前,我已经删除了重载。但我想知道是否有可能超载。