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

  • 相关阅读:
    JavaScript cookie详解
    Javascript数组的排序:sort()方法和reverse()方法
    javascript中write( ) 和 writeln( )的区别
    div做表格
    JS 盒模型 scrollLeft, scrollWidth, clientWidth, offsetWidth 详解
    Job for phpfpm.service failed because the control process exited with error code. See "systemctl status phpfpm.service" and "journalctl xe" for details.
    orm查询存在价格为空问题
    利用救援模式破解系统密码
    SSH服务拒绝了密码
    C# 调用 C++ DLL 中的委托,引发“对XXX::Invoke类型的已垃圾回收委托进行了回调”错误的解决办法
  • 原文地址:https://www.cnblogs.com/david-rui/p/xfire.html
Copyright © 2011-2022 走看看