一、搭建环境
jdk1.7以上 64位
eclipse mar最新版本
tomcat7 64位
cxf 最新版本 3.1.2
一版前三个已经配置好,只需要配置cxf即可使用
步骤:打开window环境变量---》设置
1、CXF-HOME --->F:\eclipse_common\apache-cxf-3.1.2;//指cxf的解压路径
2、PATH ---->F:\eclipse_common\apache-cxf-3.1.2\bin;//指cxf解压路径下的bin路径
3、CLASSPATH ---->F:\eclipse_common\apache-cxf-3.1.2\lib\cxf-manifest.jar;//指lib包下的cxf-manifest.jar架包依赖
配置完成以后,在window命令行输入 wsdl2java -v
如果显示:wsdl2java apache-cxf-3.1.2 那么表示配置成功!
二、编写代码
1、创建一个web Dynamic工程名称:CxfWebServiceTest------》然后导入cxf 3.1.2的所有架包(复制再粘贴到项目lib目录下即可)
包结构:src/cxf/interfaces----->存放接口ITestCxfService.java (1)
src/cxf/implement---->存放实现类ITestCxfServiceImpl.java (2)
(1)代码如下:
package cxf.interfaces;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

@WebService
public interface ITestCxfService {
//测试cxf的接口
@WebMethod
public String testCxfService(@WebParam(name="message")String message,@WebParam(name="result")int result)throws Exception;
}@WebService:注解表明是webService
@WebMethod:注解表明是方法
@WebParam :注解表明方法的参数
(2)代码如下
package cxf.implement;
import cxf.interfaces.ITestCxfService;
public class ITestCxfServiceImpl implements ITestCxfService{
@Override
public String testCxfService(String message, int result) throws Exception {
if(result==0){
return message;
}else{
return "error!";
}
}
} 2、配置xml文件
web.xml,该文件的标签是有固定顺序的,不能随意变更
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>CxfWebServiceTest</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/service-beans.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<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>/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app> 3、编写service-beans.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<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">
<!-- <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"/> --><!--在cxf-3.1.2以后就不用在文件中添加这三段描述-->
<bean id="TestCxfService" class="cxf.implement.ITestCxfServiceImpl"/> <!--实现类的全类名-->
<jaxws:endpoint id="testCxfService" implementor="#TestCxfService" address="/testCxfService" /> <!--暴露的访问点-->
</beans> 三、生成wsdl文件
1、选择项目------》单击右键-----》选择export----->web WAR file-------->选择刚才生成的项目-------》指定到tomcat webapp 目录下
2、重启tomcat ------>在地址栏输入http://localhost:8080/CxfWebServiceTest/testCxfService?wsdl
3、回车将会看见wsdl文件
四、测试刚才的web service接口(CXF客户端)
1、创建一个java project 工程(注意:不是web Dynamic项目)名称:TestCxfService,然后导入cxf的架包
包结构:src/test/cxf
2、需要利用cxf的bat文件命令

所以,进入cxf-3.2.1文件夹的bin目录下,打开cmd 进入命令行
使用命令wsdl2java -ptest.cxf -dF:\TestCxfService\src -all http://localhost:8080/CxfWebServiceTest/testCxfService?wsdl
*** test.cxf代表TestCxfService测试项目下的包
*** F:\TestCxfService\src 代表测试项目的目标路径