Comencé a aprender Apache CXF con Spring. En primer lugar, intenté crear un modelo simple de cliente/servidor.Apache CXF + Spring: generación de un cliente simple
El lado del servidor es: service.HelloWorld.java
@WebService
public interface HelloWorld {
String sayHi(String text);
}
service.HelloWorldImpl.java
@WebService(endpointInterface = "service.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
public String sayHi(String text) {
return "Hello, " + text;
}
}
El lado del cliente es: client.Client.java public class Cliente {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"cxf-client-servlet.xml"});
HelloWorld client = (HelloWorld) context.getBean("client");
System.out.println(client.sayHi("Batman"));
}
}
cxf-cliente-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schema/jaxws.xsd">
<bean id="client" class="service.HelloWorld" factory-bean="clientFactory" factory-method="create"/>
<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="service.HelloWorld"/>
<property name="address" value="http://localhost:8080/services/HelloWorld"/>
</bean>
El problema es: para hacer el trabajo del cliente que he tenido que añadir el servicio. HelloWorld (paquete + interfaz) para el proyecto de los clientes. He oído que antes de usar un servicio necesito generar un stub. Entonces es confuso para mi Entonces, ¿cuál es el enfoque correcto y cuál es la mejor práctica (puede ser que sea mejor utilizar algún enfoque de contrato o similar)? Más tarde, quiero agregar WS-Security, así que necesito un fondo fuerte =)
Gracias de antemano.
Gracias por la respuesta. ¿Cómo puede el servicio distribuir la interfaz? – Dmitry
¿Entonces sugiere no usar JaxWsProxyFactoryBean? – Dmitry
Se necesita la anotación @WebService - He comprobado =) – Dmitry