CXF 与 Spring 的整合:可以在传统的 Java EE 应用的基础上添加一层 Web Service 层,我们的 Java EE 应用就可以对外暴露成 Web Service,这样就允许任何平台、任何语言编写的程序来调用这个 Java EE 应用;
1 . 复制 CXF 的 jar 包(最核心的6个), jar 包地址 http://pan.baidu.com/s/1jHJ56BW 注:请选择性复制 (Apache官网上也可以下载);
asm-3.3.jar commons-logging-1.1.1.jar cxf-2.4.1.jar neethi-3.0.0.jar wsdl4j-1.6.2.jar xmlschema-core-2.0.jar
2 . 在 web.xml 配置CXF的核心控制器:CXFServlet;
3 . 在 Spring 配置文件中导入 CXF 提供 Schema、XML(cxf.jar 包里提供)
* Schema 文件
<beans xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://cxf.apache.org/jaxws //命名空间
http://cxf.apache.org/schemas/jaxws.xsd">//物理路径
* XML 的配置文件
<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"/>
4 . 在 Spring 配置文件中使用 jaxws:endpoint 元素类暴露 Web Service;
5 . 添加拦截器,在 jaxws:endpoint 元素里添加 inInterceptors、outInterceptors 子元素;
* 代码有时比语言更有说服力,新建一个 Web Project 项目代码如下:
(1)、服务器端:
①Food.java
public class Food {
private Integer id;
private String name;
private String describe;
public Food() {
super();
}
public Food(Integer id, String name, String describe) {
super();
this.id = id;
this.name = name;
this.describe = describe;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescribe() {
return describe;
}
public void setDescribe(String describe) {
this.describe = describe;
}
}
②User.java
public class User {
private Integer id;
private String name;
private String tel;
private String describe;
public Integer getId() {
return id;
}
public User() {
super();
}
public User(Integer id, String name, String tel, String describe) {
super();
this.id = id;
this.name = name;
this.tel = tel;
this.describe = describe;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getDescribe() {
return describe;
}
public void setDescribe(String describe) {
this.describe = describe;
}
@Override
public int hashCode() {
final int pri