Webservices sobrecarga de metodos

719 views
Skip to first unread message

cot...@gmail.com

unread,
Mar 31, 2011, 12:57:54 AM3/31/11
to jav...@googlegroups.com

Hola,

pues eso, que tengo una clase que la convierto en webservice con las anotaciones (fabuloso) pero soy incapaz de publicar metodos sobrecargados...en cuanto tengo tres, falla.

WSSERVLET11: failed to parse runtime descriptor: javax.xml.ws.WebServiceException: class demo.jaxws.saludo do not have a property of the name arg1

package demo;
import com.Persona

@WebService
public class MiClase{

 @WebMethod (operationName="uno")
 public String saludo(String nombre) { ... }
 @WebMethod (operationName="dos")
 public String saludo(int edad) { ... }
 @WebMethod (operationName="tres")
 public String saludo(Persona persona) { ... }

}

Con clases de este estilo me falla (sin sobrecarga va bien) y me viene a decir que las classes que genera jaxws no tienen la propiedad tal y tal, pero yo pienso que falta alguna anotacion para instruir al generador del servicio.

Cualquier comentario será bienvenido

saludos

Jorge Medina

unread,
Mar 31, 2011, 7:43:56 PM3/31/11
to jav...@googlegroups.com
Apparently you can

http://forums.java.net/node/653999

but it would be easier to maintain if your server side match what the
client sees as the operation name.


2011/3/31 cot...@gmail.com <cot...@gmail.com>:

> --
> www.JavaSOS.com
> Grupo de colaboración Java/J2ee para desarrolladores de habla hispana.

Jorge Medina

unread,
Mar 31, 2011, 7:46:21 PM3/31/11
to jav...@googlegroups.com
Oops!

Si, aparentement sí se puede

> http://forums.java.net/node/653999

pero tu aplicacion sera mucho mas fácil de mantener si los nombres de
los servicios ccorresponden con los nombres que el cliente ve a traves
del WSDL


2011/3/31 Jorge Medina <cerebrote...@gmail.com>:

Pablo Codeiro

unread,
Mar 31, 2011, 8:05:09 PM3/31/11
to jav...@googlegroups.com, Jorge Medina
Cotoql:
   La sobrecarga de metodos no es admitida por los WebServices SOAP. La propia arquitectura te lo impide, debido a que cuando se crea el XML de la request, el servidor no sabria a que metodo llamar.

Te doy un ejemplito para que se entienda el PORQUE NO, a ver si vos podrias solucionarlo:
  Del lado del servidor, en java tenemos los siguientes metodos:
 
  public void borrarCampo(String clave);
  public void borrarCampo(Integer clave);


Acordate que los WebServices SOAP, envian un XML desde el cliente al servidor, con la petición.

El cliente (ya sea java o no, eso no importa) internamente va a enviarle al servidor la siguiente petición(request) via XML:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.bla.com.ar">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:borrarCampo>
         <ser:clave>121212</ser:clave>
      </ser:borrarCampo>
   </soapenv:Body>
</soapenv:Envelope>

Una vez que tenes este XML como request.... Vos, como servidor... ¿Como sabes a que METODO llamar de los dos? 121212 puede ser un Integer, o puede ser un String. No hay forma de que te des cuenta si está llamando a borrarCampo(String clave) o a borrarCampo(Integer clave).


La solución que propone jorge medina, es: Sobrecargalo en el codigo del servidor, pero al fin y al cabo, del lado del cliente (Mas bien, desde el WSDL para adelante), los metodos NO van a estar sobreescritos.

Osea, en el cliente, van a ser dos metodos con nombres distintos, y en el servidor va a ser el mismo, pero sobrecargado.

En el ejemplo anterior, del lado del cliente, tendrias dos metodos:  borrarCampo(String clave) y borrarCampo2(Integer clave). Como ya dijo Jorge, no es para nada mantenible, ni feliz....

Espero que te sirva!


My two cents.

cot...@gmail.com

unread,
Mar 31, 2011, 8:12:56 PM3/31/11
to jav...@googlegroups.com, Pablo Codeiro, Jorge Medina
Excelente se entiende perfectamente ... esta muy bien que existan anotaciones que soporten la sobrecarga, y me parece una explicación excelente!! la parte de arquitectura ...

Les agradezco a los dos muchísimo por las respuestas, por más que busque nunca las encontré ... soy otro cliente satisfecho de JAVASOS!!!

Un saludo cordial ...
Reply all
Reply to author
Forward
0 new messages