Web Service实践之——开始XFire

合集下载

图文并茂XFire开发Webservices文挡

图文并茂XFire开发Webservices文挡

一、新建一个Web service 工程,如果原来有Web工程,则重构:二、三、四、五、web.xml 中配置:(自动)六、新建一个service 类一. 创建Web Service工程在MyEclipse 5.0中引入了一个新的工程类型即Web Service工程,该工程扩展了MyEclipse Web Project来支持额外的Web Service配置,开发和部署.本部分将使用Web Services Project wizard来创建和配置一个新的Web Service Projects Web Service Wizard将完成下列的动作:创建MyEclipse J2EE Web Project在工程中的web.xml文件中配置XFire Servlet创建XFire services.xml配置文件在工程中的构建路径中添加MyEclipse-XFire类库添加一个指定的MyEclipse web project builder到.projects文件,以便部署services.xml文件到它合适的位置.如: <webroot>/WEB-INF/classes/META-INF/xfire/运行Web Service Project Wizard该向导包括三个页面, Page-1搜集Web Project配置细节, Page-2搜集XFire配置细节, Page-3在新建的构建路径中配置XFire类库1. 执行Web Services Project Wizard.1). 选择File>New>Other2). 扩展MyEclipse种类按照J2EE工程的种类3). 选择Web Services Project然后点击Next,如图所示Figure-1: New Project Wizard Launcher2. 添加Project Name,点击NextFigure-2: Page-2, Collecting web configuration details3.在向导的Page-2中添加XFire servlet和service.xml文件的配置信息,按照默认的值即可.Figure-3: XFire servlet and services.xml configuration4.在向导的Page-3中选择类库添加到工程的构建路径中,其中XFire Core Library是需要的,如果要在工程中开发一个客户端应用, XFire HTTP Client Libraries也是需要的.Figure-4: Selecting XFire libraries to add to new web service project buildpath5选择Finish完成Web Service工程的创建过程Figure-5,显示了新创建的HelloWorld Web Service工程的组织结构,Web Service 工程和一个标准的MyEclipse Web工程很相似. XFire Web Service配置元素如图红色区域显示:Figure-5: Web services artifacts of a new web service project二. 创建Web Service-Code-first Strategy在这部分将用MyEclipse Web Service Wizard并通过使用Code-first Strategy来创建一个HelloWorldService示例.1. 执行MyEclipse Web Service Wizard,有两种方法来执行MyEclipse Web Service Wizard方法1.从MyEclipse perspective toolbar中来执行向导在打开的Web Service Wizard上的workbench上来选择新Web Service按钮方法2.从workbench menubar执行向导1. 从workbench menubar选择: File>New>Other>MyEclipse>Web ServiceFigure-6: Launching Web Service Wizard2. 在Page-1选择HelloWorld 工程并选择Create web service from Java bean3. 选择Next到Page-2Figure-7: Page-1 of new web service wizard4. 填写Web Service的名字HelloWorldService5. 选择Java Source folder或者选择New按钮来新建一个source folder6. 填写Java package或者通过选择Browse按钮来选择一个已经存在的package.也可以选择New按钮来新建一个Java package注意:对Service接口和Service执行的类的默认值是基于所填入Web Service名字来产生的.7. 选择Next来初始化Web Service的创建过程Figure-8: Page-2 of new web service wizard.该向导产生了IHelloWorldService Java接口和HelloWorldServiceImpl Java类.并且在services.xml配置文件中创建了一个<service>实体(如图所示),注意到example(String message)方法在接口类中产生,当Web Service部署后作为一个测试操作.Figure-9: Newly created HelloWorld interface and implementation classWeb Service 服务端服务接口代码:package org.stephencat.ws;//Generated by MyEclipsepublic interface IHelloWorldService {public String example(String message);}Web Service 服务端服务实现代码:package org.stephencat.ws;//Generated by MyEclipsepublic class HelloWorldServiceImpl implements IHelloWorldService {public String example(String message) {return message + " This is Xfire !!";}}三. 部署Web Service ProjectWeb Service可以部署在任何MyEclipse支持的J2EE应用服务器上,该部分将演示如何在Tomcat 5 Web容器上部署HelloWorld工程.3.1部署HelloWorld Web Service ProjectFigure-10显示了如何部署HelloWorld应用.1. 从Server Manager中选择Deployer按钮(step-1)2. 在Server Deployments对话框中选择Add to create a new deployment (step-2)3. 在New Deployment对话框中选择HelloWorld工程并选择Exploded Archive选项4. 在New Deployment对话框选择Finish来将HelloWorld在Tomcat 5默认的位置中打包为WAR5. 选择OK完成部署Figure-10: Three-step deployment process新HelloWorld WAR部署将出现在Server Manager视图中Tomcat 5节点下.Figure-11: Servers Manager View depicting deployed HelloWorld web service project四. 启动Tomcat服务器(或JBoss 服务器)五. 使用Web Service Explorer测试Web ServiceMyEclipse提供了一个Web Service Explorer来测试Web Service.1. 在MyEclipse perspective中选择toolbar button来执行Web Service ExplorerFigure-15: Web Services Explorer launch button on workbench toolbar2. 选择WSDL模式(Figure-16)3. 在活动面板中键入HelloWorldService WSDL文档的URLhttp://localhost:8080/HelloWorld/services/HelloWorldService?WSDLWeb Service Explorer将下载自动产生的WSDL文档,该WSDL文档由XFire framework,并产生一系列的操作能够调用service.4. 在活动面板中选择example操作并在in0域中键入HelloWorld5. 选择Go按钮来调用在HelloWorldService上的example操作,,结果出现在Status面板上Figure-16: Web Services Explorer testing HelloWorldService六. 创建Java Test客户端XFire提供了一个动态的代理框架,能够读取WSDL文档和创建潜在的消息服务使Java类来执行在Web Service的行为.该部分将为HelloWorld Web Service写一个Java Web Service客户端6.1增加XFire类库配置为了使example client能够在HelloWorld工程中运行,需要增加XFire HTTP Client类库到工程的构建路径中.1. 在Package Explore视图中右击HelloWorld工程选择Build Path>Add Library2. 选择MyEclipse Libraries3. 选择XFire HTTP Client LibrariesFigure-17: Choosing the XFire HTTP Client Libraries 4. 选择Finish6.2创建HelloWorldClient类执行Java类向导来创建HelloWorldClient类Figure-18: HelloWorldClient defined in New Java Class Wizard.Web Service 客户端代码如下:package org.stephencat.ws;import org.codehaus.xfire.*;import org.codehaus.xfire.service.*;import org.codehaus.xfire.service.binding.*;import org.codehaus.xfire.client.*;import .*;public class HelloWorldClient {/*** @param args*/public static void main(String[] args) {Service srvcModel = newObjectServiceFactory().create(IHelloWorldService.class);XFireProxyFactory factory =new XFireProxyFactory(XFireFactory.newInstance().getXFire());String url ="http://localhost:8080/HelloWorld/services/HelloWorldService";try {IHelloWorldService srvc = (IHelloWorldService)factory.create(srvcMode l, url);String result = srvc.example("hello world");System.out.print(result);} catch (MalformedURLException e){e.printStackTrace();}}}【客户端】【经验:】服务的接口的参数不可以是实体类的对象:比如:Book book以及其他的数组,但Map对象可以,所以我们就用键值对(Map)来作参数,在性能以及网速上都可以得到很大的提高~~~~。

XFire开发webservice服务和客户端全攻略

XFire开发webservice服务和客户端全攻略

使用XFire开发webservice服务和客户端全攻略收藏XFire 是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service 各项标准协议,帮助你方便快速地开发Web Service应用。

相对于Axis来说,目前XFire相对受欢迎,加上其提供了和Spring集成的支持,在目前的Web Service开源社区拥有众多的追随者。

并且因为XFire为Spring提供的支持,使得我们可以很容易在Spring中使用XFire构建Web Service应用。

XFire 与Axis2相比具有如下特征:l 支持一系列Web Service的新标准--JSR181、WSDL2.0 、JAXB2、WS-Security 等;l 使用Stax解释XML,性能有了质的提高。

XFire采用Woodstox 作Stax实现;l 容易上手,可以方便快速地从pojo发布服务;l 支持Spring、Pico、Plexus、Loom等容器;l 灵活的Binding机制,包括默认的Aegis,xmlbeans,jaxb2,castor;l 高性能的SOAP 栈设计;l 支持Spring、Pico、Plexus、Loom等容器。

XFire 与Axis1性能的比较如下:l XFire 比Axis1.3快2-6倍;l XFire 的响应时间是Axis1.3的1/2到1/5。

XFire 在WebService框架中开始较晚,它从现有的框架中借鉴了许多优秀的理念,力争将Web Service的应用开发难度降到最低。

此外,还提供了各种绑定技术、支持多种传输协议,对WebService体系中许多新的规范提供了支持。

下面让我们来看一个XFire于Spring集成的helloWorld的简单例子。

一.实现的功能和特点本例具有如下功能和特点:1)基于J2EE平台的Web Service服务;2)开发方便,配置简单;3)与spring无缝集成。

Web+Services发布与调用(axis,xfire)

Web+Services发布与调用(axis,xfire)

目录一使用Axis和XFire发布Web Service (2)1.1 准备工作 (2)1.1.1 新建工程 (2)1.1.2 axis依赖文件 (3)1.1.3 XFire依赖文件 (3)1.2 Axis发布Web Service (4)1.2.1 传递简单数据类型的Web Service (4)1.2.2 带自定义对象传递的Web Service (8)1.3 XFire发布Web Services (10)1.3.1 传递简单数据类型的Web Service (10)1.3.2传递复杂数据类型的Web Service (12)附录: 1Server的结构 (16)二调用Web Services (17)2.1 准备工作 (17)2.1.1 新建工程 (17)2.1.2 启动Tomcat上发布的1Server服务 (17)2.2 Axis发布的Web Service调用方式 (18)2.2.1 Dynamic Invocation Interface (DII)方式 (18)2.2.2 Dynamic Proxy方式 (19)2.2.3 Stubs方式 (20)2.3调用XFire发布的Web Service (22)2.3.1服务以jar包形式发布的时候直接调用 (23)2.3.2 使用Axis的Client包 (23)2.3.3 使用Xfire的Client包 (24)附录2:2Client目录结构 (31)一使用Axis和XFire发布Web Service 1.1 准备工作Axis主页:/Axis下载:/dist/ws/XFire主页:/XFire下载:/Download去以上站点下载axis最新包和XFire最新包,包内有axis和XFire依赖的其他jar包。

1.1.1 新建工程1.1.2 axis依赖文件1.1.3 XFire依赖文件1.2 Axis发布Web Service1.2.1 传递简单数据类型的Web Service1.把Axis依赖的jar包放入lib文件夹下.2.在web.xml中加入如下:<!-- ****************** axis ws start ****************** --> <listener><listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener </listener-class></listener><servlet><servlet-name>AxisServlet</servlet-name><servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class></servlet><servlet><servlet-name>AdminServlet</servlet-name><servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class><load-on-startup>100</load-on-startup></servlet><servlet><servlet-name>SOAPMonitorService</servlet-name><servlet-class>org.apache.axis.monitor.SOAPMonitorService</servlet-class><init-param><param-name>SOAPMonitorPort</param-name><param-value>5001</param-value></init-param><load-on-startup>100</load-on-startup></servlet><servlet-mapping><servlet-name>AxisServlet</servlet-name><url-pattern>/servlet/AxisServlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>AxisServlet</servlet-name><url-pattern>*.jws</url-pattern></servlet-mapping><servlet-mapping><servlet-name>AxisServlet</servlet-name><url-pattern>/services/*</url-pattern></servlet-mapping><servlet-mapping><servlet-name>SOAPMonitorService</servlet-name><url-pattern>/SOAPMonitor</url-pattern></servlet-mapping><!-- uncomment this if you want the admin servlet --><!--<servlet-mapping><servlet-name>AdminServlet</servlet-name><url-pattern>/servlet/AdminServlet</url-pattern></servlet-mapping>--><session-config><!-- Default to 5 minute session timeouts --><session-timeout>5</session-timeout></session-config><!-- currently the W3C havent settled on a media type for WSDL;/TR/2003/WD-wsdl12-20030303/#ietf-draftfor now we go with the basic 'it's XML' response -->3.发布到Tomcat5.0+ 启动Tomcat服务启动的时候若出现下面错误。

webservice(Xfire的使用)

webservice(Xfire的使用)

WebService1、WebService有什么用,使用它有什么好处及它的原理是怎样的Web Service主要为了使原来各个孤立的站点之间的信息能够相互通信、共享而提出的一种接口。

Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议simple object access protocal)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。

注:SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是一个基于XML的通讯协议用于分散和分布式环境下网络信息交换。

在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。

它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。

2、Webservice移植性是不同系统(不同语言开发的系统、相同语言但属于不同应用开发的系统)之间互操作的平台,他提供一种标准,不同平台和不同语言之间进行互操作(异构系统之间互连互通)的标准它与语言和平台无关(无关性),有的时候无关性比性能更重要,意味着更通用也可以认为webservice就是一种应用程序,不同的系统通过它可以是实现互操作如果其它系统要访问发布在web服务器上java Web系统中某个类中的方法,这个时候只需要给该类封装成一个WebService Api接口3、如果一个webservice创建好了之后就可以访问了通过Soap(simple object access protocol)协议,实际使用了xml来描述和封装request和response,使得他们(request和response)可以通过soap协议进行传递.soap协议中提供了标准的远程过程调用RPC(方法)来访问webservice,rpc使用xml和xsd(xml schema Definition是DTD的替代品)来描述被请求的方法以及该方法的参数情况和返回情况{ 即用xml和xsd来描述和封装request和response,使得他们(request和response)可以通过soap协议进行传递}4、为什么其它系统都可以访问webservicewebservice使用xml和xsd来描述内部一些配置,xml和xsd是webservice基本数据格式wsdl(webservice description language),它使用的全是xml和xsd。

Web Services教程

Web Services教程

Web Services 教程Web Services 可以将应用程序转换为网络应用程序。

通过使用 Web Services,您的应用程序可以向全世界发布信息,或提供某项功能。

Web Services 可以被其他应用程序使用。

通过 Web Services,您的会计部门的 Win 2k 服务器可以与 IT 供应商的 UNIX 服务器相连 接。

基本的 Web Services 平台是 XML+HTTP。

Web services 使用 XML 来编解码数据,并使用 SOAP 来传输数据。

学习如何经由 应用程序创建 Web Services。

在本教程中,我们把一个 程序转换为了 Web Services。

Web Services 可使您的应用程序成为 Web 应用程序。

Web Services 通过 Web 进行发布、查找和使用。

您应当具备的基础知识 在继续学习之前,您需要对下面的知识有基本的了解:•HTML •XML 如果您希望首先学习这些项目,请在我们的首页访问这些教程。

什么是 Web Services? •Web Services 是应用程序组件 •Web Services 使用开放协议进行通信 •Web Services 是独立的(self-contained)并可自我描述 •Web Services 可通过使用 UDDI 来发现 •Web Services 可被其他应用程序使用 •XML 是 Web Services 的基础 它如何工作? 基础的 Web Services 平台是 XML + HTTP。

HTTP 协议是最常用的因特网协议。

XML 提供了一种可用于不同的平台和编程语言之间的语言。

Web services 平台的元素: •SOAP (简易对象访问协议) •UDDI (通用描述、发现及整合) •WSDL (Web services 描述语言) 我们会在本教程后面章节讲解这些主题。

webservice使用教程

webservice使用教程
据说,XFire确实比Axis2简单很多
AXIS VS CXF
在SOA领域,我们认为Web Service是SOA体系的构建单元(building block)。对于作过WebService的开发人员来说,AXIS和CXF一定都不会陌生。这两个产品都是Apache孵化器下面的Web Service开源开发工具。 Axis2的最新版本是1.3,CXF现在已经到了2.0版本。
比较这两个框架的Web Service开发方法与比较它们的特性同样重要。 从开发者的角度,两个框架的特性相当的不同。 Axis2的开发方式类似一个小型的应用服务器,Axis2的开发包要以WAR的形式部署到Servlet容器中,比如Tomcat,通过这些容器可以对工作中的Web Service进行很好的监控和管理。Axis2 的Web administrion模块可以让我们动态的配置Axis2.一个新的服务可以上载,激活,使之失效,修改web服务的参数。管理UI也可以管理一个或者多个处于运行状态的服务。这种界面化管理方式的一个弊端是所有在运行时修改的参数没有办法保存,因为在重启动之后,你所做的修改就会全部失效。
22. </servlet-mapping>
23.
24.</web-app>
<?xml version="1.0" encoding="GB2312">
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
.pansky.webservice.xfire.study
,在这个包下面新建一个接口:

WebService入门

WebService入门

myEclipse开发webservice入门(2007-06-29 11:09:52)转载分类:技术参考说明:myeclipse5.1提供webservice开发插件,采用xfire引擎,另有apache的引擎Axis,两者实现方式略有差异,xfire的插件包在myEclipse安装目录MyEclipse\eclipse\plugins\com.genuitec.eclipse.ws.xfire_5.1.0下.首先:创建web service project1.新建project,选择web service project2.填写project name 和 web root folder,二者名字最好一致-->next3.默认显示需要添加的XFireServlet和services.xml,保持默认值即可-->next4.选择需要添加的包,xFire 1.2 Core Library-<MyEclipse Library>,该包默认选择.如果要在工程中开发一个客户端应用, XFire HTTP Client Libraries也是需要的.-->finish,web service project创建完成5.说明,web service project 的目录结构与web project 类似.多了一级WebServices,及该目录下的services.xml文件.还有多引用xFire 1.2 Core Libararies包.services.xml 用来注册添加的webservice其次:创建web service 实现类1.选择上述建好工程的WebServices,右键单击,依次选择new-->other-->MyEclipse-->Web Services-->Web Service-->next2.选择webservice部署的web service project(若多个web service project的话),勾选Create new Java Bean-->next3.填写如下信息:Web Service name:创建的web service 名字,即web service 类名Java Package:选择或新建web service 类所在包名将自动创建两个类,一个为类名前加I命名的接口,另一个是类名后加Impl命名的实现类,两个类的类名可修改.其它信息保持默认值即可-->finish4.创建完成后,自动将配置信息保存到services.xml文件里.5.可以根据需要修改生成的两个类,添加功能实现方法6.重复1-5可以在一个web service project工程里添加任意多个web service最后:调用web service1.如果要直接在当前应用下添加测试类调用web service的话,首先要添加调用包.方法:右键工程-->选择property-->Java Build Path-->Libraries-->Add Libraries-->MyEclipse Libraries-->XFire 1.2 HTTP Client Libraries2.新建一测试类,添加如下代码/**远程调用*/package com.capinfo.dao;import .MalformedURLException;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import com.capinfo.vo.PersonVo;public class TranslateDaoImpl {/*** 调用service方法,实现翻译功能* @param originalText* @return*/public String translate(String originalText) {String translateText ="";try {/**TranslateWebService是webservice在services.xml注册的名字*/String endpoint ="http://localhost:8080/webservice_test/services/TranslateWebService"; Service service = new Service();Call call = (Call) service.createCall();call.setTargetEndpointAddress(new .URL(endpoint));/** 调用service的方法名*/call.setOperationName("translate");/** invoke方法的参数是Object数组,该数组元素个数与方法参数一致*/translateText= (String) call.invoke(new Object[] {originalText}); }catch (Exception e) {}return translateText;}}/**本地测试类调用的话,如下实现代码即可*/public static void main(String[] args) {// TODO Auto-generated method stubService srvcModel = newObjectServiceFactory().create(ITranslateWebService.class);XFireProxyFactory factory =new XFireProxyFactory(XFireFactory.newInstance().getXFire());String helloWorldURL ="http://localhost:8080/webservice_test/services/TranslateWebService";try{ITranslateWebService srvc = (ITranslateWebService)factory.create(srvcModel, helloWorldURL);String result = srvc.translate("hello world ljm");System.out.print(result);} catch (MalformedURLException e){e.printStackTrace();}}。

WebService使用

WebService使用

WebService使用目录目录 (2)1 XFire方式 (3)1.1 XFire生成服务端 (3)1.1.1 建立webservice工程 (3)1.1.2 建立webservice (4)1.2 访问webservice (8)1.3 XFire生成客户端 (9)1.4 客户端调用webservice服务 (10)2 AXIS方式 (11)2.1 AXIS生成服务端 (11)2.2 AXIS生成客户端 (18)2.3 客户端调用AXIS的webservice服务 (18)3 JAX-WS方式 (19)3.1 使用WSDL生成服务端 (19)3.2 创建服务端 (21)3.3 JAX-WS生成客户端 (24)3.4 客户端调用webservice服务 (26)4 CXF方式 (28)4.1 导入所需包 (28)4.2 接口创建 (28)4.3 实现类创建 (29)4.4 web.xml配置 (29)4.5 applicationContext.xml配置 (30)5 关于jax-ws服务端和xfire服务端冲突的问题 (30)6 推荐模式 (31)1XFire方式1.1XFire生成服务端1.1.1建立webservice工程●使用Myeclipse新建一个Webservice工程WBSVS,选择XFire方式。

●选择Next,默认选项●默认选项完成webservice创建1.1.2建立webservice●选中工程,新建一个webservice选择XFIRE Strategy选Create web service from java bean & create new java bean填写webservice名称,其他自动补充点击完成,系统生成如下内容●Services.xml内容如下:●Web.xml中新增webservice配置信息1.2访问webservice启动工程,使用soapui即可调用到该webservice,服务端建成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Web Service实践之——开始XFire一、Axis与XFire的比较XFire是与Axis2 并列的新一代WebService平台。

之所以并称为新一代,因为它:1、支持一系列Web Service的新标准--JSR181、WSDL2.0 、JAXB2、WS-Security等;2、使用Stax解释XML,性能有了质的提高。

XFire采用Woodstox 作Stax实现;3、容易上手,可以方便快速地从pojo发布服务;4、Spring的结合;5、灵活的Binding机制,包括默认的Acegis,xmlbeans,jaxb2,castor。

XFire与Axis1性能的比较1、XFire比Axis1.3快2-6倍2、XFire的响应时间是Axis1.3的1/2到1/5XFire与Axis2的比较虽然XFire与Axis2都是新一代的WebService平台,但是Axis2的开发者太急于推出1.0版本,所以1.0还不是一个稳定的版本,它的开发者宣称1.1版本即将推出,希望1.1版本会是个稳定的版本。

在XFire捐献给apache后有人认为Axis2将会灭亡。

其实在很多人眼里,Axis2并不是pojo形式,现在也好象XFire比Axis更有市场,也有很多人开始从Axis转向XFire。

据说,XFire确实比Axis2简单很多AXIS VS CXF在SOA领域,我们认为Web Service是SOA体系的构建单元(building block)。

对于作过WebService的开发人员来说,AXIS和CXF一定都不会陌生。

这两个产品都是Apache孵化器下面的Web Service开源开发工具。

Axis2的最新版本是1.3,CXF现在已经到了2.0版本。

这两个框架都是从已有的开源项目发展起来的。

Axis2是从Axis1.x系列发展而来。

CXF 则是XFire和Celtix项目的结合产品。

Axis2是从底层全部重新实现,使用了新的扩展性更好模块架构。

CXF也重新的深化了XFire和Celtix这两个开发工具。

新产品的退出导致了几个问题。

是不是现有的使用Axis 1.x,XFire和Celix的应用需要迁移的新的版本上。

如果一个开发人员确定要迁移它的应用到新的框架上,那么他应该选择哪一个呢?相反的,如果一个开发者决定从头开发一个新的Web Service,他应该使用哪个呢?这两个框架哪一个更好一些呢?对于系统迁移来说,也许迁移到新的框架并不难。

Axis和CXF都提供了迁移的指导。

能够给开发者一些迁移的技巧和经验。

但是对于这样迁移,这两个开源项目都没有提供迁移的工具。

对于这样的迁移工作,尽管很值得去寻找所有的可行方案。

Axis2和CXF都有各自不同的WebService开发方法,每个方法都有相当数量拥护者。

通过一个比较矩阵来比较Axis2和CXF变得有现实的意义。

这两个项目都开发不够成熟,但是最主要的区别在以下几个方面:1. CXF支持WS-Addressing,WS-Policy,WS-RM,WS-Security和WS-I Basic Profile。

Axis2不支持WS-Policy,但是承诺在下面的版本支持。

2. CXF可以很好支持Spring。

Axis2不能3. AXIS2支持更广泛的数据并对,如XMLBeans,JiBX,JaxMe和JaxBRI和它自定义的数据绑定ADB。

注意JaxME和JaxBRI都还是试验性的。

CXF只支持JAXB和Aegis。

在CXF2.14. Axis2支持多语言-除了Java,他还支持C/C++版本。

比较这两个框架的Web Service开发方法与比较它们的特性同样重要。

从开发者的角度,两个框架的特性相当的不同。

Axis2的开发方式类似一个小型的应用服务器,Axis2的开发包要以W AR的形式部署到Servlet容器中,比如Tomcat,通过这些容器可以对工作中的Web Service进行很好的监控和管理。

Axis2 的Web administrion模块可以让我们动态的配置Axis2.一个新的服务可以上载,激活,使之失效,修改web服务的参数。

管理UI也可以管理一个或者多个处于运行状态的服务。

这种界面化管理方式的一个弊端是所有在运行时修改的参数没有办法保存,因为在重启动之后,你所做的修改就会全部失效。

Axis2允许自己作为独立的应用来发布Web Service,并提供了大量的功能和一个很好的模型,这个模型可以通过它本身的架构(modular architecture)不断添加新的功能。

有些开发人员认为这种方式对于他们的需求太过于繁琐。

这些开发人员会更喜欢CXF。

CXF更注重开发人员的工效(ergonomics)和嵌入能力(embeddability)。

大多数配置都可以API来完成,替代了比较繁琐的XML配置文件,Spring的集成性经常的被提及,CXF 支持Spring2.0和CXF's API和Spring的配置文件可以非常好的对应。

CXF强调代码优先的设计方式(code-first design),使用了简单的API使得从现有的应用开发服务变得方便。

不过你选择Axis2还是CXF,你都可以从开源社区得到大量的帮助。

这两个框架都有商业公司提供服务,WSO2提供AXIS2的支持,Iona提供CXF的支持。

这两公司都有很活跃的开发者社区。

Axis2出现的时间较早,CXF的追赶速度快。

我的建议是:如果你需要多语言的支持,你应该选择AXIS2。

如果你需要把你的实现侧重JA V A并希望和Spring集成,CXF就是更好的选择,特别是把你的Web Service嵌入其他的程序中。

如果你觉得这两个框架的新特性对于你并没有太大的用处,你会觉得Axis1也是不错的选择,你应该继续使用它知道你有充分的理由去更换它。

二、开始XFire的生火之旅:1、配置XFire运行环境:在Tomcat下新建一个Web Applications,命名为stove,然后在其WEB-INF目录下新建一个web.xml文件,文件中输入:Xml代码1.<?xml version="1.0" encoding="GB2312">2.<!DOCTYPE web-app3. PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"4. "/dtd/web-app_2_3.dtd">5.6.<web-app>7.8. <servlet>9. <servlet-name>XFireServlet</servlet-name>10. <display-name>XFire Servlet</display-name>11. <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>12. </servlet>13.14. <servlet-mapping>15. <servlet-name>XFireServlet</servlet-name>16. <url-pattern>/servlet/XFireServlet/*</url-pattern>17. </servlet-mapping>18.19. <servlet-mapping>20. <servlet-name>XFireServlet</servlet-name>21. <url-pattern>/services/*</url-pattern>22. </servlet-mapping>23.24.</web-app><?xml version="1.0" encoding="GB2312"><!DOCTYPE web-appPUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""/dtd/web-app_2_3.dtd"><web-app><servlet><servlet-name>XFireServlet</servlet-name><display-name>XFire Servlet</display-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>其中主要就是引入了XFireServlet,用以处理Web Service请求,并且负责提供Web Service 的WSDL,如果你发布了一个名为BookService的WebService,则可以通过网址:http://<服务器>[:端口]/<webapp名>/services/BookService来访问这个WebService,并且通过地址:http://<服务器>[:端口]/<webapp名>/services/BookService?WSDL 来得到这个WebService的WSDL信息。

相关文档
最新文档