Java 我们可以在web服务类中实现方法重载吗?
我想在Java web服务类中实现方法重载,如下所示:Java 我们可以在web服务类中实现方法重载吗?,java,wsdl,jax-ws,axis2,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]); } } 如果我将单个用户对象转发给myMethod,它将触发第一个方法,如果我发送一个用户数组,它将触
public String myMethod(User user)
{
// My code
}
public String myMethod(User[] user)
{
for(int i=0; i<user.length; i++)
{
myMethod(user[i]);
}
}
如果我将单个用户对象转发给myMethod,它将触发第一个方法,如果我发送一个用户数组,它将触发第二个方法
在WSDL文件中,它只显示一个方法。但是,如果我尝试为这两个调用调用@WebMethodoperationName=,则无法生成WSDL文件 web服务不允许操作重载。
这是明确禁止的,也不允许它。
即使您发现一个堆栈对此有一些支持,我也建议不要采用这种方法。
重载是一个面向对象的概念。不要试图将它们应用于面向服务的范例重载web服务方法并不困难。对于Axis1.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完成的。我认为不可能让Web服务过载,即使是这样,也肯定不是好做法+1,好信息。虽然我和Axis共事了很长一段时间,但我不知道Axis能做到这一点。我绝不会这样做,因为这不是一种洁净的web服务设计,但我很高兴知道我是否遇到过必须实现这种东西的情况。重载不是一个OO概念,它与OO没有任何关系,例如,C语言是一种过程/结构化语言,它提供函数重载。