xfireWebService

 

 

一 . 用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的过程.)

 

posted @ 2013-11-09 18:58  菟丝子  阅读(368)  评论(0编辑  收藏  举报

============================================================================== 
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员

==============================================================================