【参考:http://cxf.apache.org/docs/jax-ws-configuration.html】
【参考:http://cxf.apache.org/docs/writing-a-service-with-spring.html】
【参考:http://cxf.apache.org/docs/simple-frontend-configuration.html】
在上节里,我们介绍了JAX-WS的创建Service和调用Service的方式。这节介绍另种实现方式:Simple。
除了支持通过读取jax-ws的annotation来生成webservice,CXF也支持直接从一个类对象生成webservice服务,这就是这里要介绍的simple frontend方式。
一、Service接口定义
public interface OrderProcess {
String processOrder(Order order);
}
没有任何jax-ws相关的annotation
二、Server的发布
ServerFactoryBean bean = new ServerFactoryBean();
bean.setAddress("http://localhost:8181/cxf/simple");
bean.setServiceBean(new OrderProcessImpl());
bean.setServiceClass(OrderProcess.class);
bean.create();
或者是Spring方式:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:simple="http://cxf.apache.org/simple" xmlns:soap="http://cxf.apache.org/bindings/soap" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd http://cxf.apache.org/simple http://cxf.apache.org/schemas/simple.xsd"> <simple:server id="orderProcess" serviceClass="com.liulutu.liugang.cxf.simple.OrderProcess" address="http://localhost:8181/cxf/simple"> <simple:serviceBean> <bean class="com.liulutu.liugang.cxf.simple.OrderProcessImpl" /> </simple:serviceBean> </simple:server> </beans>
三、Client端的实现
ClientProxyFactoryBean client = new ClientProxyFactoryBean();
client.setAddress("http://localhost:8181/cxf/simple");
client.setServiceClass(OrderProcess.class);
OrderProcess orderProcess = (OrderProcess)client.create();
String s = orderProcess.processOrder(<order>);
System.out.println(s);
或者是Spring的方式:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:simple="http://cxf.apache.org/simple" xmlns:soap="http://cxf.apache.org/bindings/soap" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd http://cxf.apache.org/simple http://cxf.apache.org/schemas/simple.xsd"> <simple:client id="orderClient" serviceClass="com.liulutu.liugang.cxf.simple.OrderProcess" address="http://localhost:8181/cxf/simple"> </simple:client> </beans>
然后在java代码里:
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("/com/liulutu/liugang/cxf/simple/client.xml");
OrderProcess bean = context.getBean("orderClient", OrderProcess.class);
String processOrder = bean.processOrder(<order>);
System.out.println(processOrder);