2012-04-25 15 views
5

me gustaría poner en práctica la sobrecarga de métodos en la clase de servicio web Java como sigue:¿Podemos implementar la sobrecarga de métodos en la clase de servicio web?

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

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

Si se reenvía un solo User objeto a myMethod(), se debe activar el primer método y si envío una serie de User s , debería desencadenar el segundo método.

En el archivo WSDL, muestra solo un método. Sin embargo, si intento llamar al @WebMethod(operationName="") para ambas llamadas, no puedo generar el archivo WSDL.

+0

No creo que sea posible sobrecargar un servicio web, e incluso si lo es, ciertamente no es una buena práctica – ControlAltDel

Respuesta

14

Sobrecarga de operación es no permitido para servicios web.
Está explícitamente prohibido en WS-BP y WSDL 1.2 también lo deshabilita.
Incluso si encontró una pila que tiene algún soporte para esto, recomendaría no para seguir este enfoque.
Sobrecarga es un concepto OO. No intente aplicarlos al Service Oriented paradigma

+0

La sobrecarga no es un concepto OO y no tiene ninguna relación con OO, por ejemplo, la C el lenguaje es un lenguaje de procedimiento/estructurado y ofrece funciones de sobrecarga. –

3

La sobrecarga de los métodos del servicio web no es difícil. Con Axis 1.4, al menos, es bastante simple. Si hay dos métodos sobrecargados en el servicio, como a continuación:

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

A continuación, una petición como esta:

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

invocará el segundo método.

y una petición como ésta:

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

invocará el primer método.

La resolución es hecha por Axis.

+1

+1, buena información. Aunque trabajé con Axis por un buen tiempo, no sabía que Axis podía hacer eso. Nunca lo haría de esta manera ya que no es un diseño de servicio web "kosher", pero es bueno saber si alguna vez me encuentro con un caso de esquina donde debo implementar tal cosa. –

Cuestiones relacionadas