zoukankan      html  css  js  c++  java
  • webservice之XFire的使用(java调用java)

    注意:xfire不支持java.util.List等集合,所以调用webservice传递的参数要为基本类型。

    转自:http://zp9245.blog.163.com/blog/static/105941532011995490825/

    1.下载需要的xfire包

    下载地址:http://xfire.codehaus.org/Download,下载xfire-distribution-1.2.6.zip文件,并解压。
    新建web项目,取名TestXFire,将解压目录下的xfire-all-1.2.6.jar和lib目录下的所有包导入到项目中。
     
    2.创建类
    使用接口的设计是一个好的实践,所以先创建接口:ITestService,代码如下:
    package com.gdie.xfire.example;
    //该接口提供一个方法,用于计算
    public interface ITestService {
    public int add(int p1, int p2);
    }
    创建接口实现类
    package com.gdie.xfire.example;
    public class TestService implements ITestService {
    public int add(int p1, int p2) {
    return p1 + p2;
    }}
    3.创建META-INF文件夹
    简便起见,将WebRoot下的META-INF文件夹复制到项目的src下,这样的话会在部署发布目录下web-inf下的classes下自动建立META-INF,而同时WebRoot下也有一个META-INF文件夹,这两个容易混淆,实际webservice下真正起作用的是web-inf下的classes下的web-inf下的META-INF,所以,关键是在项目的src下面有META-INF这个文件夹,并定义里面的内容,与WebRoot下META-INF无关。
    然后在src下的META-INF建立xfire子文件夹,里面建立一名叫services.xml配置文件,配置如下: 
    <?xml version="1.0" encoding="UTF-8"?> 
    <beans xmlns="http://xfire.codehaus.org/config/1.0"> 
    <service> 
       <name>TestService</name> <!--随便命名-->
       <namespace>http://com/gdie/xfire/example/ITestService</namespace> <!--随便命名-->
       <serviceClass>com.gdie.xfire.example.ITestService</serviceClass> <!--接口类-->
       <implementationClass>com.gdie.xfire.example.TestService</implementationClass> <!--实现类-->
    </service> 
    </beans> 
    注意:包文件路径com.gdie.xfire.example.ITestService等需要正确对应。
    关键是在src下面要有META-INF文件夹和里面的文件,否则会报找不到services.xml错误而加载不了项目。 
     
    4.修改web.xml
    配置文件关键是定义XFireServlet,对应代码如下: 
    <?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">
     
        <welcome-file-list> 
           <welcome-file>index.jsp</welcome-file> 
        </welcome-file-list> 
        <servlet> 
           <servlet-name>XFireServlet</servlet-name> 
           <servlet-class> 
               org.codehaus.xfire.transport.http.XFireConfigurableServlet 
           </servlet-class> 
           <load-on-startup>0</load-on-startup> 
        </servlet> 
        <servlet-mapping> 
           <servlet-name>XFireServlet</servlet-name> 
           <url-pattern>/services/*</url-pattern> 
        </servlet-mapping> 
         <servlet-mapping> 
             <servlet-name>XFireServlet</servlet-name> 
             <url-pattern>/servlet/XFireServlet/*</url-pattern> 
         </servlet-mapping> 
    </web-app> 
    至此,服务器端部署完毕。完整的项目文件结构如图:
    Java WebService总结(使用xfire) - Summer - Flying fish.
     将项目加载进tomcat并启动tomcat,无异常。 

    打开ie,输入 
    http://localhost:8080/TestXFire/services/  (如果这个地址访问不了,那么就写全地址http://localhost:8080/TestXFire/services/ITestService?wsdl
    出现 
     
    Java WebService总结(使用xfire) - Summer - Flying fish.
     表明部署成功,点wsdl可以看见一堆xml代码。 
     
    5.客户端测试
    先将刚才建立的TestXFire整个项目打包成jar包(myeclipse的export),名为TestXFire.jar,再新建一个web项目TestXFireClient,导入xfire的包,和刚才的TestXFire工程的打包TestXFire.jar (这里也可以不用TextXFire.jar这个项目,只需要把接口类《ITestService.java》文件拷到客户端项目中)
     
    在src下新建一个测试类,代码如下: 
    package com.gdie.xfire.test;
     
    import org.codehaus.xfire.service.Service;
    import org.codehaus.xfire.service.binding.ObjectServiceFactory;
    import org.codehaus.xfire.client.XFireProxyFactory;
     
    import com.gdie.xfire.example.ITestService;;
     
    public class MyClient {
    public static void main(String[] args) {
    try{
    Service serviceModel = new ObjectServiceFactory().create(
    ITestService.class,"TestService","http://localhost:8080/TestXFile/services/ITestService?wsdl",null);
    ITestService service = (ITestService) new XFireProxyFactory().create(
    System.out.println("返回值是:"+service.add(5, 8));
    }catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    }
    }
    }
    运行,输出结果是: 
    返回值是:13
    则说明客户端成功。 

    至此,webservice部署测试例子成功。
  • 相关阅读:
    将Vim改造为强大的IDE
    Ubuntu首次开启root用户
    ssh-keygen实现免密码登陆
    Ubuntu下配置samba服务器实现文件共享
    Ubuntu下Apache+php+mysql网站架设详解
    IIS支持PHP
    详解C/C++预处理器
    学C++之感悟
    return *this和return this的区别
    const 的全面总结
  • 原文地址:https://www.cnblogs.com/qlong8807/p/3457132.html
Copyright © 2011-2022 走看看