- 首先应该把需要的包找齐了,就目前而言应该是apache-cxf-2.1.,下栽地址http://cxf.apache.org/download.html。
- 建立web工程,导入所需要用到的包,如下:
webservice所需要的包: commons-logging-1.1.jar geronimo-activation_1.1_spec-1.0-M1.jar (or Sun's Activation jar) geronimo-annotation_1.0_spec-1.1.jar (JSR 250) geronimo-javamail_1.4_spec-1.0-M1.jar (or Sun's JavaMail jar) geronimo-servlet_2.5_spec-1.1-M1.jar (or Sun's Servlet jar) geronimo-ws-metadata_2.0_spec-1.1.1.jar (JSR 181) jaxb-api-2.1.jar jaxb-impl-2.1.6.jar jaxws-api-2.1.jar jetty-6.1.5.jar jetty-util-6.1.5.jar neethi-2.0.jar saaj-api-1.3.jar saaj-impl-1.3.jar stax-api-1.0.1.jar wsdl4j-1.6.1.jar wstx-asl-3.2.1.jar XmlSchema-1.2.jar xml-resolver-1.2.jar 整合spring所需要的包: aopalliance-1.0.jar spring-core-2.0.4.jar spring-beans-2.0.4.jar spring-context-2.0.4.jar spring-web-2.0.4.jar CXF2.1框架所需包: cxf-2.1.jar cxf-manifest.jar
- 新建一个接口类:HelloWorld,如下:
package com.zx.cxf.service; import javax.jws.WebParam; import javax.jws.WebService; @WebService public interface HelloWorld { String sayHi(@WebParam(name="text") String text); }
- 创建接口的实现类:HelloWorldImpl,如下
package com.zx.cxf.service; import javax.jws.WebService; import com.zx.cxf.service.HelloWorld; @WebService public class HelloWorldImpl implements HelloWorld { public String sayHi(String text) { return "Hello " + text; } }
- 在WEB-INF目录下新建beans.xml,如下:
<?xml version="1.0" encoding="gb2312"?> <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-2.0.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" /> <bean id="helloWordBean" class="com.zx.cxf.service.HelloWorldImpl" /> <jaxws:server id="registerWebService" serviceClass="com.zx.cxf.service.HelloWorldImpl" address="/HelloWorld"> <jaxws:serviceBean> <ref bean="helloWordBean" /> </jaxws:serviceBean> </jaxws:server> </beans>
- 修改web.xml文件,如下:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <!-- START SNIPPET: webxml --> <web-app> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/beans.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <servlet> <servlet-name>CXFServlet</servlet-name> <display-name>CXF Servlet</display-name> <servlet-class> org.apache.cxf.transport.servlet.CXFServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> </web-app> <!-- END SNIPPET: webxml -->
-
启动tomcat测试:简单的测试就是ie测试,在浏览器中输入 http://localhost:8080/CxfService/services/,如果出现
{http://service.cxf.zx.com/}HelloWorldImplPort ,或者输入http://localhost:8080/CxfService/services/HelloWorld?wsdl,出现wsdl文挡,则说明服务器端配置成功。
-
以上是服务端的配置,若成功则配置客户端.(此处服务端和客户端是两个不同的应用程序)
-
在客户端项目根目录添加
<?xml version="1.0"?> <project name="cxf wsdl2java" basedir="." default=""> <property name="cxf.home" location ="D:\apache-cxf-2.1"/> <path id="cxf.classpath"> <fileset dir="${cxf.home}/lib"> <include name="*.jar"/> </fileset> </path> <target name="register">(此名称可任意) <java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true"> <arg value="-client"/> <arg value="-d"/> <arg value="src"/> <arg value="-p"/> <arg value="com.south.webapp.action.member.bbsclient"/>(生成本地存根的目录,需自己手动建立) <arg value="http://bbs.south.com/bbs/service/HelloWord?wsdl"/>(此处为服务端webservice服务访问路径) <classpath> <path refid="cxf.classpath"/> </classpath> </java> </target> </project>
-
累了,要睡觉了,未完待续吧.