注意:请使用jdk 1.6或以上版本
CXF 开发有两种方式:
l Java first 先开发java程序,通过annotation生成wdsl
l Wsdl first 直接写WDSL,通过wsdl2java命令生成java文件
本实例采用java first开发
服务开发
简单hello服务开发,客户端传入user信息,服务器将user信息以string类型返回给服务器。
1、定义web 服务接口(SEI)
import javax.jws.WebService; //jax-ws annotation @WebService public interface Hello {
public String sayHello(User user); }
|
2、接口实现
import javax.jws.WebService;
//jax-ws annotation @WebService(endpointInterface="service.Hello") public class HelloImpl implements Hello {
public String sayHello(User user) { System.out.println("我被调用了"); return user.toString(); } }
|
3、User 类(服务接收参数 javabean)
import java.io.Serializable;
//JAXB annotation import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAccessType; @XmlAccessorType(XmlAccessType.FIELD) public class User implements Serializable{
public String name; public String age;
public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; }
public String toString(){ return "name = "+name +", age = " +age; } }
|
4、CXF 与spring 整合
<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.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> //cxf初始化(必需加上) <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> //定义接口实现类 <bean id="hello" class="service.HelloImpl"></bean> //部署服务 serviceClass 服务接口类 address 服务地址 <jaxws:server id="hell" serviceClass="service.Hello" address="/hello"> <jaxws:serviceBean> <ref bean="hello" /> </jaxws:serviceBean> </jaxws:server> |
5、注册cxf
<!-- CXF 配置 --> <servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/ws/*</url-pattern> </servlet-mapping> |