7

我想在 Java Web 服务类中实现方法重载,如下所示:

public String myMethod(User user)
{
    // My code
} 

public String myMethod(User[] user)
{
    for(int i=0; i<user.length; i++)
    {
        myMethod(user[i]);
    }
}

如果我将单个User对象转发到myMethod(),它应该触发第一个方法,如果我发送一个 s 数组User,它应该触发第二个方法。

在 WSDL 文件中,它只显示一个方法。但是,如果我尝试同时调用@WebMethod(operationName="")这两个调用,我将无法生成 WSDL 文件。

4

2 回答 2

16

Web 服务不允许操作重载。
它在WS-BP中被明确禁止,并且WSDL 1.2也不允许它。
即使您找到了对此有一些支持的堆栈,我也建议您不要遵循这种方法。
重载是一个OO概念。不要试图将它们应用于Service Oriented范式

于 2012-04-25T16:48:04.260 回答
5

重载 Web 服务方法并不困难。至少使用 Axis 1.4,它相当简单。如果服务中有两个重载方法,如下所示:

public String myMethod(String firstName, String lastName) throws RemoteException
public String myMethod(String name) throws RemoteException

然后是这样的请求:

http://localhost:8080/services/testService?method=myMethod&name=<name> 

将调用第二种方法。

还有这样一个请求:

http://localhost:8080//services/testService?method=myMethod&firstName=<first_name>&lastName=<last_name>

将调用第一个方法。

分辨率由 Axis 完成。

于 2012-04-25T16:48:07.303 回答