一 . 用Xfire创建webservice:
1. 下载xfire-1.2.6 地址:http://xfire.codehaus.org/Download.
解压后 目录结构:
2. 新建 一个web项目,创建一个service接口.
package com.test.service; public interface CalculatorService { public int add(int a,int b); public int subtract(int a,int b); public int multipli(int a,int b); public int division(int a,int b); }
3. 创建该service接口的实现类.
package com.test.service.impl; import com.test.service.CalculatorService; public class CalculationServiceImpl implements CalculatorService { public int add(int a, int b) { return a+b; } public int division(int a, int b) { return a/b; } public int multipli(int a, int b) { return a*b; } public int subtract(int a, int b) { return a-b; } }
4. 在web.xml中配置xfire拦截器(可以参考xfire里example 提供的例子)
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>XFireServlet</servlet-name> <servlet-class> org.codehaus.xfire.transport.http.XFireConfigurableServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/servlet/XFireServlet/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> </web-app>
5. 发布service接口
step1 在src下创建META-INF/xfire/service.xml
step2 编辑service.xml发布webservice服务
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>CalculatorService</name> <!--配置service接口 --> <serviceClass>com.test.service.CalculatorService</serviceClass> <!--配置service实现类 --> <implementationClass>com.test.service.impl.CalculationServiceImpl</implementationClass> </service> </beans>
6. 加入xfire的jar包, 分别是xfire-all-1.2.6.jar 及lib目录 下所有jar包, 添加到项目中.(放在WebRoot/WEB-INF/lib下即可)
7. 将该项目部署到tomcat下,启动tomcat,浏览器 中访问 http://localhost:8080/项目名/services ,看到下图所示表名服务已经发布成功.
二 . 建立客户端,调用刚刚发布 的Calculatorservice服务.(利用build.xml生成客户端代码)
1.新创建一个项目,在src下创建build.properties
src.dir = ${basedir} lib.dir = c:/webServiceJar/xfireJar wsdl.dir =http://localhost:8080/myXfire/services/CalculatorService?wsdl
2. 在src下创建 build.xml
<?xml version="1.0" encoding="UTF-8"?> <project name="antXfireService" default="gen-webservice" basedir="."> <property file="build.properties"></property> <path id="project-classpath"> <fileset dir="${lib.dir}"> <include name="**/*.jar" /> </fileset> </path> <target name="gen-webservice"> <taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="project-classpath"/> <wsgen outputDirectory="${src.dir}" wsdl="${wsdl.dir}" package="stub.test.client" overwrite="true"/> </target> </project>
3. 运行build.xmL,ant将会自动构建客户端代码,如下图
其中stub.test.client是我们真正需要的
4. 创建CalculatorServiceTest.java来测试该service接口
package stub.test.client; public class CalculatorServiceTest { public static void main(String[] args) { CalculatorServiceClient service = new CalculatorServiceClient(); CalculatorServicePortType portType = service.getCalculatorServiceHttpPort(); System.out.println(portType.add(100, 200)); } }
至此客户 端调用已经 完成.
三. 使用tcpman工具查看 客户端与webservice之间传递的内容
1. 双击tcpman.jar 可以直接 运行该工具.
2. 修改stub.test.client.CalculatorServiceClient.java中所填写webservice的端口号为tcpman中设置的端口号
3.再次运行stub.test.client.CalculatorServiceTest测试类,在tcpman中可以看到 webService与客户端之间所传递的数据.(可见客户端与service服务器之间 是 采用soap方式进行传输数据的,其实 就是将xml转为javaBean,再讲javaBean转为xml的过程.)