一、下载CXF包,apache-cxf-2.6.,解压后得到文件夹apache-cxf-2.6.1
图1
二、创建服务端
1、新建Dynamic Web Project
FileNewProjectWeb—Dynamic Web Project;
工程命名后Next,将“Default output folder”改为WebContent/WEB-INF/classes,Next;
勾选“l deployment discriptor”。
图2
图3
图4
2、将解压后apache-cxf-2.6.1文件夹lib文件夹中的JAR文件导入工程下WebContent/WEB-INF/lib中,或直接复制到相应文件夹下,刷新工程。
3、创建服务接口
  工程右键NewInterface,添加代码:
package j;
import javax.jws.WebService;
import javax.jws.WebParam;
import javax.jws.WebMethod;
@WebService
public interface IcxfWB {
    @WebMethod
    String sayHello(@WebParam(name="name") String name);
}
说明:“@WebService”标记表示该接口是一个WebService服务,@ WebMethod标记表示WebService中的方法;@WebParam(name="paramName")表示方法中的参数,name属性限制了参数的名称,若没有指定该属性,参数将会被重命名。
4、创建服务实现类
package j;
public class CxfWBImpl implements IcxfWB {
    public String sayHello(String name) {
        return "Hello "+name;
    }
}
5、编辑WebContent/WEB-INF下l文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="java.sun/xml/ns/javaee" xmlns:web="java.sun/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="java.sun/xml/ns/javaee java.sun/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>CXFService</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>l</param-value>
</context-param>
<listener> <listener-class>org.t.ContextLoaderListener</liste
ner-class>
</listener>
<servlet>
<servlet-name>CXFServlet</servlet-name>
  <servlet-class>f.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>CXFServlet</servlet-name>
  <url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
其中,<context-param>指定了spring的相应配置,在<param-value>中指定了配置文件的位置;调用webservice服务<servlet-mapping>下的<url-pattern>指明了服务访问时地址的形式,“/*”代表URL地址中,包名称后直接跟服务endpoint地址,若指明<url-pattern>为“/webservice/*”,则URL为包名/ webservice/endpoint?wsdl。
6、在WebContent/WEB-INF下创建刚才指定的l文件,添加内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="/schema/beans"
xmlns:xsi="/2001/XMLSchema-instance"
xmlns:jaxws="/jaxws"
xsi:schemaLocation="
/schema/beans
/schema/beans/spring-beans.xsd
/jaxws /schemas/jaxws.xsd">
<import resource="classpath:META-INF/l" />
<import resource="classpath:META-INF/l" />
<import resource="classpath:META-INF/l" />
<bean id="SayHello" class="j.CxfWBImpl" />
<jaxws:endpoint id="sayHello" implementor="#SayHello" address="/sayHello"/>
</beans>
<jaxws:endpoint>定义了一个Webservice,implementor是webservice的处理类,值为在<bean>中指定的id,其具体实现类在class中指明,address是它的访问路径,就是刚才提到的将要在URL中显示的endpoint的名称。
三、部署服务到Tomcat
1、打包工程
右键工程ExportWAR file,指定输出路径,设置Target runtime(图5)后Finish。则在相应路径下会生成war文件,如图6。
图5
图6
2、将war文件移动至apache-tomcat\webapps下:
图7
启动Tomcat,在浏览器中输入localhost:8080/CXFService,可以看到如图8界面,说明服务部署成功。
打开服务WSDL如图9所示,可以看出URL地址为localhost:8080/war包名/l中设置的endpoint的address。
另外,sayHello方法的参数名称为指定的“name”,如果在接口方法定义 “String sayHello(@WebParam(name="name") String name); 中没有在括号中指明name属性,则该处参数名称name会被重定义为arg0。
图8
图9
四、客户端实现(以Spring调用为例)
1、生成Stub
CXF 发行版提供了一个名为“wsdl2java.bat”的工具,该工具可以通过WSDL为特定的服务创建 stub。
参数介绍:
-p  指定其wsdl的命名空间,即要生成代码的包名
-d  指定要产生代码所在目录
-client  生成客户端测试web service的代码
-server  生成服务器启动web service的代码
-impl  生成web service的实现代码
-ant    生成l文件
-compile  生成代码后编译
-quient  静默模式,不输出警告与错误信息
-all 生成所有开始端点代码:types, service proxy, service interface, server mainline, client mainline, implementation object, and an l file.
一般用到命令wsdl2java p 生成代码的包名 d 生成代码的路径 wsdl地址,例如:.../apache-cxf-2.6.1/bin/wsdl2java -j.client -d /home/administrator/src localhost:8080/CXFService/sayHello?wsdl
执行命令后,在指定位置/home/administrator/src下即生成了一些java文件。
2、创建客户端工程
1)新建Java Project,将第一步中生成的src文件夹下的所有java文件移至工程src下,刷新工程。
2)添加CXF包,右键工程Build PathConfigure Build PathLibrariesAdd External JA
Rs,添加下载解压得到的CXF相关jar文件。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。