Web Services - Primeros pasos con Eclipse - Generar Cliente Servicio Web
Ya hemos publicado nuestro servicio web en un servidor. Ahora queremos generar un cliente que consuma este servicio.
Para ello utilizaremos las mismas herramientas descritas en la entrada sobre la generación del servicio web, y el fichero descriptor del contrato que se generó, HolaMundo.wsdl.
Generamos el cliente Servicio Web
Normalmente el cliente y el servidor estarán en distintas máquinas. Por eso crearemos un nuevo proyecto web dinámico, holamundoWSCliente. Introducimos las librerías que necesitamos y el fichero del contrato del servicio, HolaMundo.wsdl (yo lo meteré en una carpeta "doc").
Nos situamos sobre el fichero descriptor del contrato (HolaMundo.wsdl) y seleccionamos "Botón Derecho > Web Services > Generate Client".
Se nos genera automáticamente las siguientes clases dentro del mismo paquete (es.lycka.holamundoWS.webservices.impl) que la implementación del servicio (HolaMundoImpl):
- HolaMundoImpl
- HolaMundoImplProxy
- HolaMundoImplService
- HolaMundoImplServiceLocator
- HolaMundoImplSoapBindingStub
Consumir el servicio web
Generamos una clase cliente de este servicio web que acabamos de crear. Por ejemplo en un nuevo paquete es.lycka.holamundoWS.clientes creamos una clase HolaMundoCliente. Esta clase será muy simple :
package es.lycka.holamundoWS.clientes;
import es.lycka.holamundoWS.webservices.impl.HolaMundoImpl;
import es.lycka.holamundoWS.webservices.impl.HolaMundoImplServiceLocator;
public class HolaMundoCliente {
public static void main(String[] args) {
try {
HolaMundoImplServiceLocator holaMundoWSServiceLocator = new HolaMundoImplServiceLocator ();
HolaMundoImpl holaMundoWS = holaMundoWSServiceLocator.getHolaMundoImpl();
String resultado = holaMundoWS.getSaludoLycka("Jero");
System.out.println("resultado: " +resultado);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Ejecutamos esta clase (con el servidor iniciado donde esté desplegado el servicio, y con conectividad entre las máquinas cliente y servidor) y en la consola deberíamos de ver :
resultado: Lycka te saluda, Jero.
Es tan bonito lo simple !
Ver también
- Web Services - Primeros pasos con Eclipse - Generar Servicio Web
- Web Services - Integrar los clientes en Spring




























garbage5 dijo
11 de July del 2008 a las 8:19 pm
Saludos chavales, me ha agradado mucho mini tutorial.
Aca donde trabajo, utilizan como IDE el Rational Application Development, y como server el WAS de WebSphere.
Espero lanzen algunos tutoriales para implementar web services en WAS.
Manuel dijo
28 de November del 2008 a las 10:57 am
Hola, muchas gracias por el minitutorial, pero me ocurre el siguiente error:
java.lang.IncompatibleClassChangeError: Implementing class
al instanciar el Locator (te dejo el código):
*****************************************
ServicioConsultaServiceLocator servicioConsultaLocator = new ServicioConsultaServiceLocator();
servicioConsultaLocator.setServicioConsultaEndpointAddress(Constantes.WS_END_POINT);
ServicioConsulta servicioConsulta = servicioConsultaLocator.getServicioConsulta();
String xml = servicioConsulta.consultar(denominacion, actividad, municipio, provincia, usuario, password);
Web Services - Primeros pasos con Eclipse - Generar Servicio Web | Lycka Bonita dijo
2 de December del 2008 a las 9:28 am
[...] Web Services - Primeros pasos con Eclipse - Generar Cliente Servicio Web [...]
Web Services - Integrar los clientes en Spring | Lycka Bonita dijo
2 de December del 2008 a las 9:30 am
[...] sabemos cómo publicar un servicio web y cómo construir un cliente que consuma dicho servicio partiendo del fichero descriptor del [...]
Nacho dijo
16 de July del 2009 a las 11:47 am
Hola, está muy bien tu tutorial y me ha servido de ayuda, pero me da un error a la hora de hacer la llamada hacia el servicio desde el cliente.
No sé si será un problema de conectividad o que, el caso es que con el Test WebServicesExplorer me funciona bien, es a la hora de llamarlo desde Java donde me da el error.
Dejo el código:
String endpointURL=”http://www.test.generali.es/sin_mobilInServWeb/services/SinMobilInHandler”;
System.out.println(”Hemos llegado hasta aquÔ);
System.out.println(”Hemos llegado hasta aquÔ);
SinMobilInHandlerService WSService = new SinMobilInHandlerServiceLocator ();
SinMobilInHandler WS = WSService.getSinMobilInHandler();
WS.executeAceptarEncargo(urgenteReq);
SinMobilInHandlerProxy WSProxy= new SinMobilInHandlerProxy();
System.out.println(”Hemos llegado hasta aquÔ);
WSProxy.setEndpoint(endpointURL);
urgenteRes= WSProxy.executeAceptarEncargo(urgenteReq);
En esta última lÃnea me da el error.
Cuando pruebo este mismo código sobre un tomcat arrancado sobre mi máquina funciona bien.
Muchas gracias.
Nacho dijo
16 de July del 2009 a las 3:58 pm
Hola
He investigado un poco y ahora el error que me da es el siguiente:
AxisFault
faultCode: {http://xml.apache.org/axis/}HTTP
faultSubcode:
faultString: (401)Unauthorized
faultActor:
faultNode:
faultDetail:
{}:return code: 401
{http://xml.apache.org/axis/}HttpErrorCode:401
(401)Unauthorized
at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at es.generali.sin.b2b.mobil.input.SinMobilInHandlerSoapBindingStub.executeAceptarEncargo(SinMobilInHandlerSoapBindingStub.java:278)
at es.generali.sin.b2b.mobil.input.Prueba.main(Prueba.java:92)
Hemos llegado hasta aquÃ
null
Puede ser un problema de login y password a la hora de entrar a la web remota?
Gracias.
Alguien que quiere hacer un webservice dijo
24 de July del 2009 a las 12:55 am
Asi no se hace un webservice, es una burla lo que posteaste para quien realmente está entrampado con uno !!!
yoyoooyoy dijo
24 de July del 2009 a las 10:18 am
Hombre, yo lo veo como una guÃa básica para empezar. Nada de coreografÃa, nada de arquitectura, pero sà que funciona y es un buen comienzo.
A mà personalmente y supongo que a todos los que lean esta entrada, nos encantarÃa que aportases algo
The Neko dijo
15 de September del 2009 a las 4:27 pm
Buen comienzo, agarrando confianza con ejemplos como este, despues se empiezan a ampliar conocimientos por cuenta propia… y al que no le guste, bien puede ir a la pagina de sun y bajarse el tutorial que ahi proporcionan.
Carlos dijo
16 de November del 2009 a las 8:29 pm
para “Alguien que quiere hacer un webservice” te tengo un desafÃo
ya que te estás poniendo asà de buenas a primeras, por qué no me ayudas a comunicar un WS hecho en PHP con NuSOAP que tiene definidos tipos complejos del tipo SOAP-ENC:Array?
A ver si puedes generar el cliente en java ya que tú sabes del tema
yoyoooyoy dijo
18 de November del 2009 a las 8:21 pm
@The Neko, gracias.
@Carlos, joer rizando el rizo
suerte con este monstruo, dividiendo vencerás !