Apache CXF + Spring: создание простого клиента

Я начал изучать Apache CXF с помощью Spring. Прежде всего, я попытался создать простую модель клиент / сервер.

На стороне сервера: 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;
   }
}

На стороне клиента: client.Client.java открытый класс Client {

    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-client-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>

Проблема в том, что для работы клиента мне пришлось добавить service.HelloWorld (пакет + интерфейс) в проект клиента. Я слышал, что перед использованием службы мне нужно сгенерировать заглушку. Так что меня это сбивает с толку. Итак, каков правильный подход и что лучше всего (может быть, лучше использовать подход, основанный на контракте, или что-то подобное)? Позже я хочу добавить WS-Security, так что мне нужен хороший опыт =)

Заранее спасибо.

6
задан Dmitry 27 January 2012 в 11:58
поделиться