`
babydeed
  • 浏览: 237959 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

转自:http://cnjava.blog.51cto.com/1208887/335070

XFire 概述

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

XFire 目前的稳定版本是 1.2.6,(在myEclipse6.01中集成了Xfire1.2.6.)

目前支持的特性主要包括:支持将 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 发布时的一些有用的信息。

---------------------------------------

下面我们使用IDE开发一个简单的webServices.

一)使用MyEclipse6.01来开发一个webService服务端。

使用MyEclipse来开发webService的服务器端比较简单。主要经过如果几个步骤

  1)首先建立一个WebServices工程

如果

  其中myEclipse会自动配置好XFire的Servlet。

以下为Web.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>

2)定义WebService的接口

view plaincopy to clipboardprint?
    public interface IHelloService {  
     public String sayHi(String uname);  

    public interface IHelloService {
     public String sayHi(String uname);
}

3)定义接口的实现类

public class IHelloServiceImpl implements IHelloService{  
    @Override 
    public String sayHi(String uname) {  
        return "Hello "+uname;  
    }  

public class IHelloServiceImpl implements IHelloService{

    @Override
    public String sayHi(String uname) {
        return "Hello "+uname;
    }

4)创建 XFire 框架的服务发布文件 services.xml

  按Xfire的开发指南上说是要在

WEB-INF\classes\META-INF\xfire\services.xml

的位置。但是MyEclipse已经在工程的下面建立了一个WebService/services.xml的文件。

其实是myclipse帮助我们映射好了位置而已。


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

<service>
<name>hellows</name>
<namespace>www.pengzj.com.cn/hellows</namespace>
<serviceClass>
com.pengzj.service.IHelloService
</serviceClass>
<implementationClass>
com.pengzj.service.impl.IHelloServiceImpl
</implementationClass>
</service>

</beans>

其中各元素的功能如下:

service
service 标签和它所包含的 xml 内容为发布成 Web 服务的 POJO 提供完整的描述。

name
Web 服务被发布时所采用的唯一名称。

namespace
Web 服务发布时所使用的命名空间。

serviceClass
Web 服务接口类的全名,包括包名和类名。

implemetationClass
Web 服务实现类的全名,包括包名和类名。

下面我们就可以部署这个工程,顺便提一下,如果正常的话你可以在tomcat启动的过程中

看到如下的信息信息:

2010-6-18 14:38:26

org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons

........

Exposing service with name {www.pengzj.com.cn/hellows}hellows

就可以知道xfire使用了spring。

现在我们可以在ie中输入如下的地址访问它

http://127.0.0.1:8080/xfire_hello_service/services/

会出现如下的可用服务列表:

xfire

点击wsdl的超链接出现这个wsdl文件的内容大致如下:

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

- <wsdl:definitions targetNamespace="www.pengzj.com.cn/hellows" xmlns:ns1="http://service.pengzj.com" xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding" xmlns:tns="www.pengzj.com.cn/hellows" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">

+ <wsdl:types>

- <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="www.pengzj.com.cn/hellows">

- <xsd:element name="getAllUser">

<xsd:complexType />

</xsd:element>

- <xsd:element name="getAllUserResponse">

- <xsd:complexType>

- <xsd:sequence>

<xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="ns1:ArrayOfUser" />

</xsd:sequence>

</xsd:complexType>

</xsd:element>

- <xsd:element name="sayHi">

- <xsd:complexType>

- <xsd:sequence>

<xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" type="xsd:string" />

</xsd:sequence>

</xsd:complexType>

</xsd:element>

- <xsd:element name="sayHiResponse">

- <xsd:complexType>

- <xsd:sequence>

<xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="xsd:string" />

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:schema>

- <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://service.pengzj.com">

- <xsd:complexType name="ArrayOfUser">

- <xsd:sequence>

<xsd:element maxOccurs="unbounded" minOccurs="0" name="User" nillable="true" type="ns1:User" />

</xsd:sequence>

</xsd:complexType>

- <xsd:complexType name="User">

- <xsd:sequence>

<xsd:element minOccurs="0" name="age" type="xsd:int" />

<xsd:element minOccurs="0" name="uname" nillable="true" type="xsd:string" />

</xsd:sequence>

</xsd:complexType>

</xsd:schema>

</wsdl:types>

+ <wsdl:message name="sayHiRequest">

<wsdl:part name="parameters" element="tns:sayHi" />

</wsdl:message>

+ <wsdl:message name="getAllUserResponse">

<wsdl:part name="parameters" element="tns:getAllUserResponse" />

</wsdl:message>

+ <wsdl:message name="getAllUserRequest">

<wsdl:part name="parameters" element="tns:getAllUser" />

</wsdl:message>

+ <wsdl:message name="sayHiResponse">

<wsdl:part name="parameters" element="tns:sayHiResponse" />

</wsdl:message>

+ <wsdl:portType name="hellowsPortType">

- <wsdl:operation name="getAllUser">

<wsdl:input name="getAllUserRequest" message="tns:getAllUserRequest" />

<wsdl:output name="getAllUserResponse" message="tns:getAllUserResponse" />

</wsdl:operation>

- <wsdl:operation name="sayHi">

<wsdl:input name="sayHiRequest" message="tns:sayHiRequest" />

<wsdl:output name="sayHiResponse" message="tns:sayHiResponse" />

</wsdl:operation>

</wsdl:portType>

+ <wsdl:binding name="hellowsHttpBinding" type="tns:hellowsPortType">

<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />

- <wsdl:operation name="getAllUser">

<wsdlsoap:operation soapAction="" />

- <wsdl:input name="getAllUserRequest">

<wsdlsoap:body use="literal" />

</wsdl:input>

- <wsdl:output name="getAllUserResponse">

<wsdlsoap:body use="literal" />

</wsdl:output>

</wsdl:operation>

- <wsdl:operation name="sayHi">

<wsdlsoap:operation soapAction="" />

- <wsdl:input name="sayHiRequest">

<wsdlsoap:body use="literal" />

</wsdl:input>

- <wsdl:output name="sayHiResponse">

<wsdlsoap:body use="literal" />

Technorati 标签: java,j2ee,webservices,xfire

</wsdl:output>

</wsdl:operation>

</wsdl:binding>

- <wsdl:service name="hellows">

- <wsdl:port name="hellowsHttpPort" binding="tns:hellowsHttpBinding">

<wsdlsoap:address location="http://127.0.0.1:8080/xfire_hello_service/services/hellows" />

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

ok.这就表示服务端大功告成了。

接下来就是在客户端要如何调用WebServices了。

分享到:
评论

相关推荐

    xfire学习例子

    **xfire学习例子** XFire(现更名为CXF)是一个开源的Java框架,主要用于构建和服务导向架构(SOA)。它提供了SOAP、RESTful、XML/HTTP、JSON等多种Web服务实现方式,使得开发者能够轻松地创建和部署Web服务。在这...

    WebService教程-xfire学习手册【技术文档】

    【WebService教程-xfire学习手册】是一份详细的技术文档,主要针对想要深入理解并掌握WebService技术,特别是使用XFire框架的开发者。这份46页的PDF教程涵盖了WebService的基础概念、XFire的安装与配置,以及如何...

    webService xfire学习资料及jar包

    在"webService xfire学习资料及jar包"中,我们主要关注的是XFire如何被用于创建和消费Web服务,以及它所包含的官方jar包。XFire的核心优势在于其简单易用的API和对SOAP(Simple Object Access Protocol)协议的良好...

    WebService xfire学习报告

    1. **XFire概述** XFire是一个开源的Java框架,用于构建和消费Web Services。它分为Service、Transport和Invoker三层结构: - **Service层**:负责服务的注册、管理和生命周期管理,ServiceRegistry接口处理服务的...

    xfire

    1. **网络编程**:xfire需要处理大量的网络通信,包括TCP/IP协议的使用、数据包的封装和解封装、延迟优化等。 2. **多线程与并发**:为了处理并发用户,xfire必须有效地管理和调度多个线程,确保系统稳定运行。 3. *...

    Web_Service学习手册(Xfire) 以及书中的源码

    总之,Xfire是学习Web服务的一个良好起点,尤其是对于初学者来说,结合“Web_Service学习手册(Xfire)”和源码,你可以快速建立起Web服务开发的基础。随着对Xfire的深入理解,你还可以进一步探索更高级的特性,如WS-...

    WebService教程-xfire学习手册

    【WebService教程-xfire学习手册】是一份详细指导开发者如何使用XFire框架来构建和消费Web服务的技术文档。Web服务是一种基于互联网的、平台无关的交互方式,它允许不同的应用程序之间进行数据交换和功能调用。XFire...

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

    《Xfire全方位解析:1.2.6版本的全面探讨》 Xfire,这款曾经在游戏...虽然时代变迁,但Xfire 1.2.6的精髓仍值得我们回味和学习,特别是对于那些致力于开发游戏社交平台的开发者来说,它提供了一本生动的历史教科书。

    Xfire-v1.99 XFire最高版本

    尽管如此,理解XFire的工作原理和设计理念对于学习现代Web服务框架仍然很有价值。 总结来说,XFire v1.99是Web服务开发的一个里程碑,它为Java开发者提供了一种高效且易于使用的工具,让Web服务的创建变得简单而...

    java使用XFire调用webService接口

    在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单的例子,展示如何使用 XFire 调用 ...

    xfire 学习笔记

    XFIRE学习笔记的内容丰富,涵盖了XFIRE的基本概念、软硬件要求、配置方法、异常处理等多个方面。以下是对这些知识点的详细阐述: XFIRE的基本概念: XFIRE是一个开源的Java Web服务框架,最初由Codehaus项目开发,...

    Xfire的client.zip_Xfire客户端代码_webservice

    在"Xfire的client.zip"这个压缩包中,我们可以研究Xfire客户端是如何实现上述功能的,这对于我们理解Web服务的客户端开发以及如何与特定服务(如Xfire)进行交互有着重要的学习价值。通过对这些代码的研究,开发者...

    xfire webservices源码

    【xfire webservices源码】是一个用于理解和学习Web服务实现的开源项目,它基于XFire框架,该框架是Java世界中一个流行的SOAP和RESTful Web服务实现工具。XFire允许开发者快速、简单地构建和部署Web服务。在这个源码...

    Java使用XFire调用WebService接口

    在IT行业中,Web服务是一种广泛...总的来说,通过这篇博客,我们可以学习到如何使用XFire这一工具来高效地在Java应用中集成和调用Web服务,理解并掌握这些知识点对于任何涉及跨系统交互的Java开发者都是极其重要的。

    xfire接口程序,包含xfire服务端和axis客户端

    在IT行业中,接口程序是系统间通信的关键,而xfire...这个"xfire接口程序"项目为学习和实践这两种技术提供了一个直观的起点,有助于开发者快速掌握Web服务的开发流程,从而在实际工作中更好地实现系统间的集成和通信。

    xfire实现webservice实例

    1. **创建服务接口**:首先,我们需要定义一个Java接口,这个接口将代表我们的Web服务。接口中的方法就是服务提供的操作。 ```java public interface HelloWorld { String sayHello(String name); } ``` 2. **...

    xfire开发所需jar包

    XFire作为一款成熟的Web服务框架,尽管现在已经被更先进的Apache CXF所取代,但它的设计理念和功能仍然具有一定的学习价值。理解并掌握这些jar包的功能和用法,有助于开发者更好地利用XFire构建高效、可靠的Web服务...

    xfire+spring+安全认证

    通过学习这些资源,你可以深入理解如何将这两个强大的工具结合起来,构建出既高效又安全的Web服务系统。 总的来说,"xfire+spring+安全认证"是一个关于利用XFire作为Web服务实现工具,结合Spring框架的安全模块,来...

Global site tag (gtag.js) - Google Analytics