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

use*_*035 7 java wsdl axis2 jax-ws

我想在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]);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我转发一个User对象myMethod(),它应该触发第一个方法,如果我发送一个Users 数组,它应该触发第二个方法.

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

Cra*_*lus 16

操作重载是不是允许网络服务.
它明确地禁止在WS-BPWSDL 1.2也不允许它.
即使您发现堆栈有一些支持,我建议不要遵循这种方法.
重载是一个OO概念.不要试图将它们应用于Service Oriented范式


Gin*_*ead 5

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

public String myMethod(String firstName, String lastName) throws RemoteException
public String myMethod(String name) throws RemoteException
Run Code Online (Sandbox Code Playgroud)

那么请求是这样的:

http://localhost:8080/services/testService?method=myMethod&name=<name> 
Run Code Online (Sandbox Code Playgroud)

将调用第二种方法.

和这样的请求:

http://localhost:8080//services/testService?method=myMethod&firstName=<first_name>&lastName=<last_name>
Run Code Online (Sandbox Code Playgroud)

将调用第一个方法.

决议由Axis完成.