XFire的DEMO使用

1.    Webserivces背景

WebService是一种跨编程语言和跨操作系统平台的远程调用技术。

从表面上看,WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端,而把提供这个WebService的应用程序叫做服务端。从深层次看,WebService是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操作性,可以用任何语言,在任何平台上写Web service ,只要可以通过Web service标准对这些服务进行查询和访问。Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。

2.    XFire介绍

最近在研究JAVA开发Webservice,发现网络上比较流行的几种选择AXIS、XFire、CFX(XFire的下一代)。在BOMC系统中主要采用XFire进行webservice接口计, XFire使得在JavaEE应用中发布Web服务变得轻而易举, XFire的配置非常简单,可以非常容易地和Spring集成。下面部署一个具体例子:

开发环境:Myeclipse 8, jdk版本-1.5.0,tomcat版本-6.0.37;

1、        新建一个Web Service Project项目,新建项目截图如下:

XFire的DEMO使用_第1张图片

2、        打开项目结构,发现已经将XFire相关jar包引入到项目中,我们只需开发具体的接口就可以,

XFire的DEMO使用_第2张图片

打开WebRoot下WEB-INF\web.xml文件,会发现项目已经将XFire拦截添加到xml中,内容如下:

<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>

访问是通过http://XXXX/ services/XXX?wsdl形式,如果这里不配置,将访问不到,当然这里的<url-pattern>内容你也可以定义成自己的访问方式。

3、        接下来开始设计自己的接口内容;

这里我定义两个比较简单的方法说明下,复杂方法都差不多,都要看你具体业务逻辑是怎样。Ok,我定义接口类如下:

接口比较简单,一个是获取传入参数,另一个是判断字符串是否相等。这是只是一个简单的说明,复杂接口要看你业务需求逻辑是怎样,做调整即可。

package com.gzinfo.unlock;

//Generated by MyEclipse

 

public interface IxfireService {

   

    public String example(String message);

       

    public boolean StrCompare(String pre,String fix) ;

}

接口实现类如下:

package com.gzinfo.unlock;

//Generated by MyEclipse

public class xfireServiceImpl implements IxfireService {

   

    public String example(String message) {

       return message;

    }

 

    public boolean StrCompare(String pre, String fix) {

       boolean flag = false  ;

       if(pre!=null){

           if(pre.equals(fix)){

              flag = true ;

           }

       }

       return flag;

    }

}

Ok,接口和实现类定义完之后,接下来这一步比较重要。要将接口类和实现类配置在service.xml中,具体路径如下/WebServices/services.xml,配置的内容也是有规范的,如下:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://xfire.codehaus.org/config/1.0">

    <service>

       <name>xfireService</name>

        <serviceClass>com.gzinfo.unlock.IxfireService</serviceClass>

       <implementationClass>

           com.gzinfo.unlock.xfireServiceImpl

       </implementationClass>

       <style>wrapped</style>

       <use>literal</use>

       <scope>application</scope>

    </service>

</beans>

<serviceClass>标签中定义的是接口类的完整包名,<implementationClass>则是对应实现类的完成包名;配置成之前设计的接口地址即可。

  接下来就是开启服务,测试下webserivice能否正常访问了。

本机访问地址如下:http://localhost:2000/XfireDemo/services/xfireService?wsdl

出现以下页面,证明接口访问正常。

 XFire的DEMO使用_第3张图片

红色区域部分就是之前定义的两个接口,这里我们写一个测试类去调用下看是否正常;

package com.gzinfo.unlock;

import java.net.MalformedURLException;

import java.net.URL;

 

import org.codehaus.xfire.client.Client;

public class Test {

    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       @SuppressWarnings("unused")

       Client client =null ;

       try {

            client = new Client(new URL("http://localhost:2000/XfireDemo/services/xfireService?wsdl"));

            Object[] results=client.invoke("example", new Object[] {"com.gzinfo.unlock"}) ;

            Object[] str=client.invoke("StrCompare", new Object[] {null,"UNLOCK"}) ;

            System.out.println(results[0].toString());

            System.out.println(str[0].toString());

       } catch (MalformedURLException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       } catch (Exception e) {,

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

    }

}

 

运行结果:

 XFire的DEMO使用_第4张图片

你可能感兴趣的:(java,xfire)