`
eggbucket
  • 浏览: 184551 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

xfire

阅读更多

XFire 概述

XFire 是 codeHaus 组织提供的一个开源框架,它构建了 POJO 和 SOA 之间的桥梁,主要特性就是支持将 POJO 通过非常简单的方式发布成 Web 服务,这种处理方式不仅充分发挥了 POJO 的作用,简化了 Java 应用转化为 Web 服务的步骤和过程,也直接降低了 SOA 的实现难度,为企业转向 SOA 架构提供了一种简单可行的方式。

XFire 目前最新的版本是 1.2.2,目前支持的特性主要包括:

  • 支持将 Web 服务绑定到 POJO、XMLBeans、JAXB1.1、JAXB2.0 和 Castor;
  • 支持基于 HTTP、JMS、XMPP 等多种协议访问 Web 服务;
  • 支持多种 Web 服务业界重要标准如 SOAP、WSDL、Web 服务寻址(WS-Addressing)、Web 服务安全(WS-Security)等;
  • 支持 JSR181,可以通过 JDK5 配置 Web 服务;
  • 高性能的 SOAP 实现;
  • 服务器端、客户端代码辅助生成;
  • 对 Spring、Pico、Plexus 等项目的支持等。

XFire 安装包

XFire 框架目前的最新版本是 1.2.6,可以访问 xfire.codehaus.org 下载 XFire 框架的安装包,下载时请选择“全部二进制发布包(Binary Distribution in zip package)”,而不仅仅是“XFire jar 文件(Jar of all XFire modules)”。

下载完成后,我们可以将下载的 .zip 文件解压缩到任意的文件夹中(后面的章节中使用 % XFIRE_HOME % 表示 XFire 框架的安装目录),解压缩后形成的文件目录结构如下:

 

  • api(目录)

    api 目录中是 XFire 框架中所有类(class)对应的 API 文档,为开发者使用 XFire 完成应用开发提供帮助。

  • examples(目录)

    examples 目录中包含了所有随 XFire 二进制包发布的实例,包括这些实例的源代码和相关 Web 应用配置内容。

  • lib(目录)

    lib 目录中包含 XFire 运行所需要的外部支持类包(.jar文件),可以根据不同项目所需的 XFire 特性选择所需要的支持类包。保守的方法是在 Web 项目中包含所有的外部支持类包(.jar文件)。

  • manual(目录)

    manual 目录中包含有 XFire 框架的帮助文档,开发者可以从这些帮助文档中学习更多运用 XFire 框架实现 SOA 的知识和技巧。

  • modules(目录)

    modules 目录中包含了 XFire 框架根据不同特性分别编译的二进制包文件。发布基于 XFire 框架的 Web 项目时,可以选择使用该目录下的所有 .jar 文件,也可以选择 XFire-all-1.2.6.jar 文件。

  • XFire-all-1.2.6.jar

    XFire 框架的二进制包文件,包含了全部的模块(modules)。

  • LICENSE.txt

    LICENSE.txt 文件中包含了 XFire 框架的授权协议。

  • NOTICE.txt
  • README.txt

    这两个文件中包含了 XFire 发布时的一些有用的信息。

XFire 框架支撑环境

XFire框架是一种基于Servlet技术的SOA应用开发框架,要正常运行基于XFire应用框架开发的企业应用,除了XFire框架本身之外,还需要JDK和Servlet容器的支持。

1.JDK 版本选择、下载和安装

XFire 支持非常多的特性,其中不同的特性对 JDK 版本的要求有所不同,比如如果项目中选择基于 JSR181 标准发布 Web 服务,我们就需要选择 JDK5 或者以上版本,如果仅仅选择将 Web 服务绑定到最简单的 POJO,我们只需要选择 JDK1.4 版本即可。

JDK 各版本均可以在 java.sun.com 网站上下载,如何安装 JDK 请参考 SUN 公司的相关技术文档和 JDK 的帮助文档。

2.Servlet 容器下载和安装

XFire 是一种基于 Servlet 技术的 SOA 应用开发框架,需要 Servlet 容器的支持。XFire 支持在多种 Servlet 容器中运行,包括 Websphere、Weblogic、TOMCAT 等。为了说明的简单,我们选择使用 TOMCAT(版本5.0.30)作为 XFire 的运行容器,所有配置过程和发布步骤的说明也均是针对 TOMCAT,如果读者使用 TOMCAT 之外的其它 Servlet 容器或者选择了 TOMCAT 的其它版本,下面的配置过程和步骤可能需要做出调整,请读者根据实际 Servlet 容器的帮助文档进行相应调整。

TOMCAT 各版本均可以在 tomcat.apache.org 网站上下载,如何正确安装 TOMCAT 服务器请参考 TOMCAT 服务器的帮助文档。

3.xalan

XFire 需要 xalan 项目的支持,然而 1.2.6 版本中并没有带有相应的 jar 文件,因此请访问 xml.apache.org ,下载 xalan 项目的二进制包。

 

XFire 应用配置

笔者使用eclipse进行开发 :首先将解压xfire文件中的lib目录下的jar复制到你项目的lib目录中,然后再将xfire根目录中的xfire-all-1.2.6.jar复制其中。然后我们在src目录中新建META-INF/xfire/services.xml  如图:


 

然后我们新建接口Calculator

package com.langsin.ws;

import java.util.List;

import com.langsin.bean.Person;

public interface Calculator
{
    public int add(int a, int b);

    public int subtract(int a, int b);

    public int multiply(int a, int b);

    public int divide(int a, int b);
   
    public Person changePerson(Person person);
   
    public List<Person> changePersons(List<Person> list);
}


并建立实行类:CalculatorImpl

public class CalculatorImpl implements Calculator
{
    public int add(int a, int b)
    {
        System.out.println("add invoked");
        try {
            Class.forName("com.mysql.jdbc.Driver");
            DriverManager drive=(DriverManager) DriverManager.getConnection("","", null);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
        return a + b;
    }

    public int subtract(int a, int b)
    {
        System.out.println("subtract invoked");
        return a - b;
    }

    public int multiply(int a, int b)
    {
        System.out.println("multiply invoked");
        return a * b;
    }

    public int divide(int a, int b)
    {
        System.out.println("divide invoked");
        return a / b;
    }
   
    public Person changePerson(Person person)
    {
        Person result = new Person();
       
        result.setUsername("hello: " + person.getUsername());
        result.setPassword("world: " + person.getPassword());
       
        return result;
    }
   
    public List<Person> changePersons(List<Person> list)
    {
        List<Person> result = new ArrayList<Person>();
       
        Person p = null;
       
        for(Person person : list)
        {
            p = new Person();
            p.setUsername("hello: " + person.getUsername());
            p.setPassword("world: " + person.getPassword());
           
            result.add(p);
        }
       
        return result;
    }
}

并在文件中加入:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">

    <service>
        <name>CalculatorService</name> //webservice的名字
        <serviceClass>com.langsin.ws.Calculator</serviceClass> //接口的名字
        <implementationClass>com.langsin.ws.impl.CalculatorImpl</implementationClass> //实行类的名字
    </service>
   
</beans>

 

 

然后再web.xml文件中加入:

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

 

如图:


在web.xml中我们配置了 <url-pattern>/servlet/XFireServlet/*</url-pattern>, <url-pattern>/services/*</url-pattern>

 

这时我们启动tomcat,输入:http://localhost/ws/services/  如图:



 这时服务器端已经开发完成:

 

那么下面我们对客户端进行开发:

public   class  Client  {
13
14      public   static   void  main(String[] args)  {
15
16         Service srvcModel  =   new  ObjectServiceFactory()
17                 .create(
Calculator. class );
18         XFireProxyFactory factory  =   new  XFireProxyFactory(XFireFactory
19                 .newInstance().getXFire());
20
21         String
CalculatorService URL  =   " http://localhost/ws/services/CalculatorService?wsdl " ;
22        
23        
Calculator calculator =  ( Calculator ) factory.create(srvcModel, CalculatorService URL );
25        
calculator .add(1,2) ;
45
46     }

47
48 }

  • 大小: 4.3 KB
  • 大小: 12.3 KB
  • 大小: 8.2 KB
分享到:
评论

相关推荐

    xfire与cxf包冲突解决方法

    1、以下四个类调用了XmlSchema-1.1.jar包 因与cxf包xmlschema-core-*.jar... xfire-all-1.2.6-incomplete.jar 替换 xfire-all-1.2.6.jar 3、XmlSchema-1.1.jar 可以与 xmlschema-core-*.jar 共存避开同路径同名类冲突

    xfire与cxf包冲突解决方案

    1、以下四个类调用了XmlSchema-1.1.jar包 因与cxf包xmlschema-core-*.jar... xfire-all-1.2.6-incomplete.jar 替换 xfire-all-1.2.6.jar 3、XmlSchema-1.1.jar 可以与 xmlschema-core-*.jar 共存避开同路径同名类冲突

    xfire所有jar包

    activation.jar commons-logging.jar jdom-1.0.jar spring.jar spring-mock.jar stax-api-1.0.1.jar stax-utils-snapshot-20040917.jar wsdl4j-1.5.2.jar wstx-asl-3.0.1.jar ...xfire-xmlbeans-1.2.2.jar

    xfire-all-1.2.6 xfire所需的全部包

    xfire-all-1.2.6 xfire所需的全部包

    XFire1.2.6完整版JAR包

    XFire1.2.6完整版JAR包 XFire1.2.6完整版JAR包XFire1.2.6完整版JAR包XFire1.2.6完整版JAR包

    xfire与cxf解决冲突

    以下四个类调用了XmlSchema-1.1.jar包 因与cxf包xmlschema-core-*.jar 冲突 ... xfire-all-1.2.6-incomplete.jar 替换 xfire-all-1.2.6.jar XmlSchema-1.1.jar 可以与 xmlschema-core-*.jar 共存避开同路径同名类冲突

    xfire的使用详解

    &lt;param-value&gt;classpath:spring/app.xml,classpath:org/codehaus/xfire/spring/xfire.xml &lt;!--配置xfire ws--&gt; &lt;servlet-name&gt;XFireServlet &lt;servlet-class&gt;org.codehaus.xfire.spring....

    xfire相关jar包

    进行WebService开发中所用到的xfire所有相关包如:xfire-jsr181-api-1.0-M1.jar、xfire-jaxws-1.2.6.jar、xfire-java5-1.2.6.jar、xfire-core-1.2.6.jar、xfire-annotations-1.2.6.jar、xfire-aegis-1.2.6.jar、...

    xfire myeclipse10包

    myeclipse10 安装xfire插件包

    xfire+spring+安全认证

    xfire+spring+安全认证,包含服务端和客户端,xfire jar包可以从我的资源下面下或网上很多。

    xfire所需jar包

    xfire所需jar包.zip

    spring 集成xfire 比较好的一种方式

    spring xfire spring 集成xfire 比较好的一种方式

    整理xfire和spring的集成 web service 面向服务编程 java

    这里面介绍了关于使用spring 集成了xfire的功能, 同时提供了部分源码, 关于web.xml中的配置 关于spring.xml的配置 关于spring.xfire.xml配置 关于项目框架的搭建 如有需要全部源码的读者可以联系我: QQ :...

    Xfire整合webservice jar包

    xfire-aegis-1.2.2.jar xfire-annotations-1.2.2.jar xfire-core-1.2.2.jar xfire-java5-1.2.2.jar xfire-jsr181-api-1.0-M1.jar xfire-spring-1.2.2.jar xfire-xmlbeans-1.2.2.jar 支持将Web服务绑定到POJO、...

    XFire创建的WebService

    XFire创建的WebService服务器端简单小例子(包含所用到的jar)

    xfire客户端jar包

    xfire客户端jar包以及一个Demo样板 Demo样板不能直接使用,因为和每个人调用的wsdl直接相关。 请修改后使用!

    Spring2.0和XFire1.2.6整合案例

    解决了Spring2.0和XFire1.2.6整合出错的问题 如果你觉得我骗分请不要下,谢谢!

    xFire发布和调用WebService所用包少

    这个自己写的xFire发布WebService,包含发布和调用,可以用在企业中,而且所用的jar也比较少,不会出现很多jar的问题,一共才9个jar,[commons-codec-1.3.jar,commons-httpclient-3.0.jar,commons-logging-1.0.4.jar,...

    XFire--Webservice入门xfire

    XFire--Webservice入门xfire

Global site tag (gtag.js) - Google Analytics