zoukankan      html  css  js  c++  java
  • 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的过程.)

  • 相关阅读:
    Java's Volatile Keyword
    reflection
    Spring
    Stack
    Set
    Vector & ArrayList
    CreateFileDemo
    session原理
    multithreadingDemo
    REST风格
  • 原文地址:https://www.cnblogs.com/david-rui/p/xfire.html
Copyright © 2011-2022 走看看