Odiar a algien es darle demasiada importancia
:)

Web Services – Integrar los clientes en Spring

Ya sabemos cómo publicar un servicio web y cómo construir un cliente que consuma dicho servicio partiendo del fichero descriptor del contrato.

Ahora integraremos el cliente del servicio que hemos desarrollado en un proyecto Spring.

Proyecto holamundoWSClienteSpringPodríamos partir de un nuevo proyecto dinámico web, holamundoWSClienteSpring, añadir spring.jar y spring-mvc.jar, y configurar el web.xml para utilizar Spring. O podemos partir del proyecto que ya construimos basándonos en Spring, holamundo.

Debemos añadir las librerías que hemos utilizado en los anteriores proyectos :

  • axis.jar
  • commons-discovery.jar
  • jaxrpc.jar
  • saaj.jar
  • wsdl4j.jar

Y necesitamos el interfaz del servicio, que podemos construir nosotros u obtenerlo como ya se ha mostrado a partir del fichero WSDL. Es el mismo que ya hemos utilizado, es.lycka.holamundoWS.webservices.HolaMundo :

package es.lycka.holamundoWS.webservices;

import java.rmi.Remote;

import java.rmi.RemoteException;

public interface HolaMundo extends Remote {

      public String getSaludoLycka (String nombre) throws RemoteException;

} 

Vale, ahora vamos a implementar un fichero xml con el formato de Spring para definir un bean de nuestro servicio web, es.lycka.holamundoWS.webservices.clientes.spring.application-context-ws.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

      xsi:schemaLocation="http://www.springframework.org/schema/beans

      http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

      <bean id="holamundoService" class="org.springframework.remoting.jaxrpc.JaxRpcPortProxyFactoryBean">

            <property name="wsdlDocumentUrl">

<value>http://localhost:8080/holamundoWS/services/HolaMundoImpl?WSDL</value>

            </property>

            <property name="namespaceUri">

<value>http://impl.webservices.holamundoWS.lycka.es</value>

            </property>

            <property name="serviceName">

                  <value>HolaMundoImplService</value>

            </property>

            <property name="portName">

                  <value>HolaMundoImpl</value>

            </property>

            <property name="serviceInterface">

<value>es.lycka.holamundoWS.webservices.HolaMundo</value>

            </property>

      </bean>

</beans>

Ya sólo nos queda construir el cliente, es.lycka.holamundoWS.clientes.spring.HolaMundoClienteSpring :

package es.lycka.holamundoWS.clientes.spring;

import java.rmi.RemoteException;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import es.lycka.holamundoWS.webservices.HolaMundo;

public class HolaMundoClienteSpring {

      public static void main(String[] args) {

            String resultado;

            try {

                  ApplicationContext contexto = new ClassPathXmlApplicationContext("/es/lycka/holamundoWS/clientes/spring/application-context-ws.xml");

                  HolaMundo servicio = (HolaMundo)contexto.getBean("holamundoService");

                  resultado = servicio.getSaludoLycka("Jero");

                  System.out.println("resultado = " +resultado);

            } catch (RemoteException 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.

Ver también

4 Comentarios hasta el momento »

  1. Web Services - Primeros pasos con Eclipse - Generar Cliente Servicio Web | Lycka Bonita dijo

    2 de December del 2008 a las 9:28 am

    [...] Web Services – Integrar los clientes en Spring [...]

  2. Web Services - Primeros pasos con Eclipse - Generar Servicio Web | Lycka Bonita dijo

    2 de December del 2008 a las 9:29 am

    [...] Web Services – Integrar los clientes en Spring [...]

  3. Andrés Mirabal dijo

    24 de February del 2009 a las 10:31 pm

    Muy buen tutorial para integrar Web Services con spring y Eclipse, pero falta agregar un detalle a la hora de inyectar el Servicio Web con Spring, y es que hay que poner el siguiente atributo en el applicationContext.xml:

    <?xml version=”1.0″ encoding=”UTF-8″?>
    <beans xmlns=”http://www.springframework.org/schema/beans”
    xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
    xsi:schemaLocation=”http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd“>
    <bean id=”calculadoraService” class=”org.springframework.remoting.jaxrpc.JaxRpcPortProxyFactoryBean”>
    <property name=”wsdlDocumentUrl” value=”http://localhost:1272/servidorWS/services/DefaultCalculadora?wsdl”/>
    <property name=”namespaceUri” value=”http://impl.servicios”/>
    <property name=”serviceName” value=”DefaultCalculadoraService”/>
    <property name=”portName” value=”DefaultCalculadora”/>
    <property name=”serviceInterface” value=”servicios.Calculadora”/>
    <property name=”serviceFactoryClass” value=”org.apache.axis.client.ServiceFactory”/>
    </bean>
    </beans>

    ya que sin este, no reconoce el motor de axis para consumir el servicio y no puede serializar los atributos que vienen por SOAP.

    Sería interesante estudiar la diferencia de este método de integrar con Spring y utilizar Xfire que es el que utiliza Spring por defecto en vez de Axis.

    Saludos.

  4. Fijar un timeout usando WebServiceTemplate de Spring-WS « La victácora dijo

    1 de May del 2011 a las 2:19 pm

    [...] Fijar un timeout usando WebServiceTemplate de Spring-WS Por venosov Una vez que sabemos cómo publicar un servicio web, ahora construiremos un cliente que consuma dicho servicio en un proyecto Spring-WS usando WebServiceTemplate, y le pondremos un timeout de 5 segundos por si el webservice está caído -partiendo del proyecto en eclipse que hacen aquí-. [...]

Comentarios RSS · TrackBack URI

Dejanos tu Comentario

Nombre: (Requerido)

E-Mail: (Requerido)

Sitio WEB:

Comentario:

Comenta