crear WS con Apache CXF

En mis nuevas aventuras con java, lo primero fue hacer unos WS con CXF, la verdad no es muy complejo… Para empezar hay que tener algunas cosas en nuestro classpath. Como las librerías de Apache CXF y Spring.

Luego creas un nuevo proyecto Web Dinámico, Uso Eclipse como Ide de Desarrollo. Lo primero es agregar la configuración al archivo Web.xml del proyecto.

hoy 1

Aquí defino la ruta en que mi WS va a funcionar y cual es el patrón de URL que va a usar, como ven hago referencia a otro archivo, llamado bean.xml,  ahí defino el endpoint y la clase que implementa mi servicio

 

hoy 2

 

Luego hago un Dto, que define mis entradas y salidas.

package com.test;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement(name = "Ejemplo")
@XmlType(propOrder = {"texto"})
public class EjemploDto implements Serializable {
 
 /**
 * 
 */
 private static final long serialVersionUID = -2385107524861075983L;
 private String texto;
 
 @XmlElement(required = true, name = "texto")
 public String getTexto()
 {
 return this.texto;
 }
 
 public void setTexto(String texto)
 {
 this.texto = texto;
 }
 
 
}

Defino que elementos son parte de los XML que se usarán. Luego hago una interface que se usará como contrato.

package com.test;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public interface ITest {
 
 @WebMethod
 public EjemploDto holaMundo(
 @WebParam(name = "Nombre") EjemploDto nombre
 );
}

y luego la clase que implementa.

package com.test;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService(endpointInterface = "com.test.ITest", serviceName = "WSTest")
public class TestImpl implements ITest {
 
 public EjemploDto holaMundo(
 @WebParam(name = "Nombre") EjemploDto nombre
 )
 {
 nombre.setTexto("hola mundo");
 return nombre;
 }
}

Luego a hacer deploy, en mi caso sobre Jboss y la salida queda así

hoy 3

 

Suerte 🙂