我们可以在Web服务类中实现方法重载吗?

时间:2012-04-25 16:37:39

标签: java wsdl jax-ws axis2

我想在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(),它应该触发第一个方法,如果我发送一个User数组,它应该触发第二个方法。

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

2 个答案:

答案 0 :(得分:16)

对于Web服务,操作重载WS-BP明确禁止,WSDL 1.2也禁止它 即使您发现有一些支持,我建议来遵循这种方法 重载是一个OO概念。不要试图将它们应用于Service Oriented范例

答案 1 :(得分: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完成。