簡體   English   中英

如何在Java Web服務中重載方法?

[英]How can I overload method in Java web-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 Service中使用重載方法? 如果是,那怎么樣?

嘗試使用操作名稱,這應該在Java中正常工作:

@WebMethod(operationName="newName")

據我所知,有一些SOAP技巧可以實現重載,但不是應該如何 - 不要使用重載來實現Web服務。

這可以通過為以上兩個函數提供如下的不同(唯一)MessageName屬性來完成

[WebMethod (MessageName="ABC")]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM