XFire
- 格式:doc
- 大小:45.00 KB
- 文档页数:9
wsdlDocumentURL 代表wsdl所对应的URL1、通过URLConnection创建连接,然后invoke相应接口优点:调用简单缺点:传递封装对象比较麻烦[java]view plaincopyprint?1.// wsdlDocumentURL必须是全地址(包含?wsdl)2.URL url = new URL(wsdlDocumentURL);3.URLConnection connection = url.openConnection();4.Client client = new Client(connection.getInputStream(), null);5.// invoke接口方法6.// 接口返回Object数组7.Object[] result = client.invoke("methodName", new Object[]{});[java]view plaincopyprint?.codehaus.xfire.service.Service serviceModel = new ObjectServiceFactory().create(接口.class);2.XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());3.IEmailBindHandlerService handler = (IEmailBindHandlerService) factory.create(serviceModel, wsdlURL);2、XFireProxyFactory创建客户端实例客户端需要明确知道接口详细信息[java]view plaincopyprint?.codehaus.xfire.service.Service serviceModel = new ObjectServiceFactory().create(IEmailBindHandlerService.class);2.XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());3.接口 handler = (IEmailBindHandlerService) factory.create(serviceModel, wsdl地址);3、通过eclipse自动生成webservice client4、通过org.codehaus.xfire.spring.remoting.XFireClientFactoryBean构建客户端实例[java]view plaincopyprint?1.<bean id="baseService" class="org.codehaus.xfire.spring.remoting.XFireClientFactoryBean" abstract="true">2. <property name="serviceFactory" ref="xfire.serviceFactory" />3. <!-- <property name="lookupServiceOnStartup" value="false" /> -->4. <property name="properties">5. <props>6. <!-- 等待HttpConnectionManager从连接池中返回空闲连接的超时时间 -->7. <prop key="http.connection.manager.timeout">1000</prop>8. <!-- 等待建立连接的超时时间 -->9. <prop key="http.connection.timeout">3000</prop>10. <!-- 等待服务器返回数据超时时间 -->11. <prop key="http.timeout">10000</prop>12. <!-- 连接到单个服务器的连接数上限 -->13. <prop key="max.connections.per.host">10</prop>14. <!-- 连接到所有服务器的连接个数上限 -->15. <prop key="max.total.connections">80</prop>16. </props>17. </property>18. </bean>19.20. <bean id="接口实例" parent="baseService">21. <property name="serviceClass" value="接口地址" />22. <property name="wsdlDocumentUrl" value="${xfireServerURL}/webservice名称?wsdl" />23. </bean>使用该配置方法的话,可以通过注入实现调用,同时可以减少手动创建URLConnection之后忘记关闭连接的尴尬只是如果使用该方法的时候,需要在web.xml中添加如下配置[java]view plaincopyprint?1.<context-param>2. <param-name>contextConfigLocation</param-name>3. <param-value>classpath:org/codehaus/xfire/spring/xfire.xml</param-value>4.</context-param>。
使用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无缝集成。
目录一使用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服务启动的时候若出现下面错误。
如何在MyEclipse和Eclipse下安装XFire插件CXF插件 WebService首先,现在都用CFX了(CFX部分源于XFire)吧,所以建议大家使用CXF,本文后面讲XFire安装……CXF的安装参见:Apache CXF: An Open-Source Services Framework /源文件的下载在/download.html博客更新时最新为2.42 一共两个文件,要下载的是其中的二进制下载包,也就是Binary distribution,下载File下的zip(for win)或者tar.gz(for linux)我用的是winXP下载完成后按照如下配置:将你的Binary distribution加压至任意文件夹(将被设为%CXF_HOME%)我的电脑->属性->高级->环境变量创建一个CXF_HOME变量,值为CXF框架所在根目录,修改一下CLASSPATH=%CXF_HOME%/lib;PATH=%CXF_HOME%/bin; 以方便在DOS窗口下直接运行java2ws,wsdl2java等可执行文件。
在%JAVA_HOME%/jre/lib目录下创建一下endorsed文件夹,将jaxb-api.jar,jaxws.jar拷贝进去。
(建议在%CXF_HOME%的文件夹中搜索endorsed,就包括这两个文件,当然,你也可以直接将这个路径包含在%CXF_HOME%\lib\endorsed包含在CLASSPATH中尝试一下,我没有试过)配置好了后,你在DOS窗口下输入java2ws,看看配置是否有效,有效会提示Missing argument: classname。
这样就OK了。
MyEclipse安装XFire要进行基于XFire的开发,需要在MyEclipse或者Eclipse里安装XFire,但是网上基本没有安装插件的说明,在这里做一个介绍:在Eclipse里添加XFire,请遵照XFire官网说明/Eclipse+Plugin进行安装在MyEclipse (9.0)骤如下:进入help->MyEclipse Configer Center ,点选Software选项卡,左侧有个Browse Software,点击导航右侧的 Add Site,弹出对话框,填入名称“XFire”(任填)和站点"/xfire/update/",点击确定,稍等片刻,你会发现在Browse Software下多了XFire的两个选项(只是找到,还没安装),OK,分别双击这两个选项,这连个添加会排程到等待更新的列表中,也就是页面右下角的Software Updates Aviables里面(其实有一个确实已经在MyEclipse里面安装了,所以应该只有一个更新),在单选框中打对勾,然后更新,会弹出更新向导,然后默认的Next Next就可以了……新建一个工程,在工程添加向导里你可能看不到XFire的选项,不急,在工程添加完成后,在工程上右键,在菜单上会出现“为该工程配置XFire”特性,在这里设置就好了……针对之前没说清楚,在这里补充这一点……完……安装完毕,新建工程,右键->添加XFire支持虽然不能从新建工程向导中配置,也没问题,恩恩完……。
xleader和xfire是什么意思
xleader 和 xfire,简单地说就是音乐出版物上面的 title(标题),或者可以理解为包装纸上面的图案( logo)。
1、音乐专辑发行的先后顺序一般是:歌手/制作人;艺术家;音乐类型。
如果一个歌手同时拥有好几张专辑,就会把它们放在一起,所以不存在专辑的先后问题,而是制作人的先后。
2、为什么有些歌曲中有“ the"或“@”标记呢?“@”表示公司名称,如: Warner Bros. Records(华纳兄弟唱片公司)、 Columbia 唱片(哥伦比亚唱片)。
其他的标记还有: sonybmg(索尼唱片)、百代唱片( EMI)、 VirginandPurberlandPartners(环球唱片)等等。
所以我们在看到“又一次……”、“只是有点……”之类的标签的时候不要惊讶。
当然了,有些歌曲里还写着由这位艺术家演奏、由这支乐队演奏、由这位指挥家演奏等等,你千万别觉得奇怪——这都是唱片发行商们精心设计的。
3、另外还有一种叫做 digitalizedhoticalmethods,即数字化图像商标。
这样就更容易让人接受,它将原本实体的封套变成了具有平面感的曲线或字母,所以就有了“ audiobook”、“ album”之类的说法,所以它和前两者一样,不用太在意。
- 1 -。
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 框架的安装包,下载时请选择“全部二进制发布包(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 应用配置内容。
Xfire指南1. 概述XFire是全球众多牛人在与axis系列对比后一致投票的选择。
我比较欣赏的特性有:1.与Spring整合,无须生成一堆文件,无须打包独立war,直接将应用中的Pojo导出为Web服务。
2.Aegis--超简约的默认Java XML 绑定机制,且可以Plugin其他绑定机制。
3.JSR181--annotatiton驱动的POJO WebService配置。
4.基于Stax的高性能框架。
5.脱离Web服务器的单元测试能力。
网上的文档与例子总是不新,请大家抛开所有的文档,所有的Axis 习惯,单看这份代表XFire1.2.2最简约做法的指南。
2. 生火指南2.1 修改web.xml,在Web应用中增加XFire的入口注意XFire有了自己的Servlet,不再依赖Spring MVC的DispatchServlet,也就远离了大家不熟悉的Spring MVC URL Mapping,与Spring达致完美的整合。
这里指定了路径为/service/* ,即WebService的URL会被默认生成为/yyy/service/BookServiceservice/ServiceName ,其中ServiceName默认为下文中的接口名。
xml 代码1.<servlet>2. <servlet-name>xfireservlet-name>3. <servlet-class>org.codehaus.xfire.spring.XFireSpringServletservlet-class>4. servlet>5. <servlet-mapping>6. <servlet-name>xfireservlet-name>7. <url-pattern>/service/*url-pattern>8. servlet-mapping>如果应用使用了Hibernate,使用了OpenSessionInView Filter,注意配置OSIV Filter Filter覆盖xfire servlet的路径,即本例中的/service/*.2.2 编写窄接口,抽取POJO中要导出的服务从已有的BookManager.java中,抽取出一个窄接口,仅暴露需要导出为Web Service的方法。
Web Service框架XFire与Tomcat集成刘岩虽然XFire 已经过时,但是无奈上个公司的项目用的是jdk1.4,所以我只能选择了老战车XFire 进行Web Service 的开发。
首先先用MyEclipse 建立一个web 项目,如图所示:利用myeclipse 为web 项目添加xfire 的支持,如图。
1一直点击默认即可,虽然这里是利用myeclipse 插件进行的辅助添加,但是我们还是有必要看一下myeclipse 为我们做了什么,添加了哪些jar 包。
有关xfire 的核心jar 包如下图:您最好还是看看都有哪些jar 包,要不你的项目经理哪天该说了:“小X 啊?你看看哪些jar2包是不必要的,咱们的服务器空间可不够啊…………”。
连服务器的空间都放不下几十兆的jar 包,我只能了。
再来看/WebServices/services.xml ,这个文件在真正环境中是会被放到到/WebRoot/WEB-INF/classes/META-INF/xfire 下面,这个类似于Spring 在web 项目中的配置文件。
这个文件是配置你要暴露的web service 的文件的,稍后还会详细阐述。
下面我们看看web.xml 修改了些什么东西,web.xml 内容如下:<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"version="2.4"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"><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><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>声明了一个Servlet,此XFireServlet 拦截了所有关于/services/*的请求,所以对外系统开放的web service 的url 基本上都是” http;//127.0.0.1:端口/项目/services/服务名”的形式。
XFire 1.2.6调用Web Service的几种方法最近由于项目的需求,我开始学习XFire 1.2.6。
XFire的服务发布很简单,但由于xfire为用户提供了多种调用(invoke) web service的方法,所以在编写客户端代码的时侯,需要我们做一番斟酌。
在不同的应用环境下,我们可能需要采用不同的服务调用的方法。
本文将详细介绍这几种调用web服务的方法。
方法一:动态客户端(Dynamic Client)这是一种最简单的web服务调用方法。
具体过程如下:1.创建一个服务代理,其中url为调用服务的wsdl地址。
Client client = new Client(new URL(url));2.调用web服务,输入参数(简单类型)。
Object[] results = client.invoke(methodName, new Object[]{param1,param2});3.打印web 服务运行结果System.out.println((ReturnValueType)results[0]);全过程只需要三个过程,非常简单。
但是,上述过程仅限于简单的方法调用,对于那些以复杂数据结构为参数的方法,以及复杂结构的返回值的方法,需要采用另外的处理方法,否则将无法正常运行。
关于复杂参数的传递以及调用复杂返回值方法的过程还有待进一步研究,如果哪个读者熟悉这一块,可以与我联系,本人将非常感谢。
方法二:代理工厂方法(Proxy Factory)一般的方法如如下:1.创建一个服务实例,就像在自己的服务器上创建一样。
要注意的是,这里的“”Service serviceModel = new ObjectServiceFactory().create(YourService.class);要注意的是,这里的“YourService”是接口类,而不是接口的实现类。
2.定义服务URLString serviceURL = “http://localhost:8080/XFireTest/services/YourService”;3.为服务创建一个代理YourService client = (YourService) new XFireProxyFactory().create(serviceModel,serviceURL);4.使用代理访问服务提供的方法String name = (String) client.getName();如果已经知道调用的服务在本地时,我们可以采取下面方法(本地传输)来调用,这种方法可以提高调用服务的速度,减少调用服务的延迟时间。
xfirefault couldnot send messageXFireFault异常的原因和解决方法什么是XFireFault异常XFireFault异常是一种由XFire框架抛出的运行时异常,表示在使用XFire进行Web服务调用时发生了错误,导致无法发送或接收消息。
XFire是一种基于Java的开源的Web服务框架,支持SOAP、REST、JSON等协议,提供了简单、高效、灵活的Web服务开发和使用的功能。
XFireFault异常的信息通常包括以下几个部分:- 异常类型,如org.codehaus.xfire.fault.XFireFault- 异常信息,如Couldn't send message- 异常原因,如.ConnectException: Connection refused: connectXFireFault异常的信息可以帮助我们分析和定位错误的原因和位置,从而采取相应的解决方法。
XFireFault异常的常见原因XFireFault异常的原因可能有很多,根据不同的异常信息和异常原因,可以分为以下几类:- 网络连接错误,如.ConnectException:Connection refused: connect,表示无法连接到Web服务的服务器,可能是由于网络故障、防火墙设置、端口占用、服务器关闭等原因导致的。
- 网络超时错误,如.SocketTimeoutException:Read timed out,表示在读取Web服务的响应时超过了设定的时间限制,可能是由于网络延迟、服务器负载、响应数据量等原因导致的。
- 服务不可用错误,如org.codehaus.xfire.fault.XFireFault: Service not found,表示无法找到指定的Web服务,可能是由于服务的地址、名称、命名空间等原因导致的。
- 服务内部错误,如org.codehaus.xfire.fault.XFireFault: Server error,表示在Web服务的服务器端发生了错误,可能是由于服务的逻辑、数据、配置、依赖等原因导致的。
java用XFire开发调用webService例子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 框架的安装包,下载时请选择“全部二进制发布包(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 应用配置内容。
披荆斩棘的哥哥xfire是什么意思
近日,在综艺节目《披荆斩棘的哥哥》中,“山鸡哥”陈小春又爆名场面:在和队员聚餐时特意显摆自己X-leader的项链,坦言“X-leader 嘛,没什么用的,虚名而已,但我需要”。
一众网友都被春哥耿直可爱的金句逗笑,呼吁节目组“给他给他都给他”。
所谓X-leader,即是“年度队长”的称号,犹记得陈小春从第一季伊始便对这个名头念念不忘。
自此X-leader的手势成为了春哥的标志,无论何时何地都要摆出这样的手势,不知是在宣告自己势在必得的决心,还是在呼吁大家推选自己为年度队长。
演出结束时、练习舞台时、甚至在张智霖袁咏仪婚礼大合照上也要比X-leader的手势,不得不说春哥对于X-leader的执念恐怕已经深入骨髓,再不给孩子颁发这个称号怕是要难以入眠了。
粉丝们看到如此实诚的陈小春,纷纷在评论区调侃,“哥哥就是这么一个可爱的人,感觉太有意思了,有点孩子气”、“妥妥搞笑男啊,虚名看似没用,但我心里就是想拥有”、“就喜欢这样大大咧咧的答复,一丝不屑中又带着几分想要”、“小春哥太好笑了,虚名看似没用,但是心里还是很想拥有,就应该这么real”、“既然来参加比赛了,就不能摆烂啊,比赛就是有名次吗,是人都有胜负欲的,那必须全力以赴得到最好的名次啊”等等,看来春哥此番又能圈粉一大波人了。
xfire是什么意思
答案:
JavaWeb服务引擎、即时通讯软件
扩展:
XFire是新一代的Java Web服务引擎,XFire使得在JavaEE应用中发布Web服务变得轻而易举。
和其他Web服务引擎相比,XFire的配置非常简单,可以非常容易地和Spring集成,它使得Java开发人员终于可以获得和Net开发人员一样的开发效率。
XFire是codeHaus组织提供的一个开源框架,它构建了POJO和SOA 之间的桥梁,主要特性就是支持将POJO通过非常简单的方式发布成Web服务,这种处理方式不仅充分发挥了POJO的作用,简化了Java 应用转化为Web服务的步骤和过程,也直接降低了SOA的实现难度,为企业转向SOA架构提供了一种简单可行的方式。
Xfire是专为游戏玩家设计的即时消息软件,有点类似于QQ ,你可以看到正在线上打游戏的朋友,同时能够看出他们正在玩什么游戏、在哪里...单击一下鼠标就行。
XFire完整入门教程本Blog所有内容不得随意转载,版权属于作者所有。
如需转载请与作者联系(fastzch@)。
未经许可的转载,本人保留一切法律权益。
一直以来,发现有某些人完全不尊重我的劳动成果,随意转载,提醒一下那些人小心哪天惹上官司。
网上关于XFire入门的教程不少,要么是讲得很简单,就像Hello World一样的程序,要么就是通过IDE集成的工具来开发的,这对于不同的人群有诸多不便,关于XFire的一些详细的信息就不再多讲,可以参考官方网站和相关的文档,这里讲一个完整的入门实例。
实例中包括三个情况,我想基本上可以概括所有的需求,或者自己稍加扩展即可。
先来看看我们的Interface。
1package test;23import java.util.List;45public interface IHelloService {6public String sayHello(String ttt);78public Course choose(User u);910public List test(List t);11}这其中包含了简单对象的传递,对象的传递,List的传递。
具体的开发步骤如下:1、定义Web Service的接口,代码见上面的接口定义。
2、实现接口和业务逻辑,代码如下:1package test;23import java.util.ArrayList;4import java.util.List;56public class HelloServiceImpl implements IHelloService {78public String sayHello(String ttt) {9return "Hello, "+ttt;10 }1112public Course choose(User u){13 System.out.println(u.getName());14 Course c=new Course();15 c.setName("Eee");16return c;1718 }1920public List test(List t){21for (int i = 0; i < t.size(); i++) {22 System.out.println((String) t.get(i));23 }24 List al=new ArrayList();25 Course c=new Course();26 c.setName("EeeDDDDDD");27 al.add(c);28return al;2930 }31}用到的User和Course两个类的代码如下:1package test;23public class User {4private String name;56public String getName() {7return name;8 }910public void setName(String name) { = name;12 }13}141package test;23public class Course {4private String name;56public String getName() {7return name;8 }910public void setName(String name) { = name;12 }1314}3、编写XFire要求的WebSevice定义描述文件,如下:1<?xml version="1.0" encoding="UTF-8"?>2<beans xmlns="/config/1.0">34<service>5<name>HelloService</name>6<namespace>http://test/HelloService</namespace>7<serviceClass>test.IHelloService</serviceClass>8<implementationClass>test.HelloServiceImpl</implementationClass>9</service>1011</beans>此文件放在src/META-INF/xfire/services.xml,编译时会自动编译到classes的相应目录下面。
XFire开发WebServiceXFire简介:XFire是新一代的Java Web服务引擎,XFire使得在JavaEE应用中发布Web服务变得轻而易举。
和其他Web服务引擎相比,XFire的配置非常简单,可以非常容易地和Spring 集成,它使得Java开发人员终于可以获得和.Net开发人员一样的开发效率. 详细内容请看:/view/920041.htmlWebService简介:它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web .应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。
Web Service是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问Web Service,通过Web Service内部执行得到所需结果.Web Service可以执行从简单的请求到复杂商务处理的任何功能。
一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。
具体内容请访问:/view/837392.html开发环境:JDK 1.6;MyEclipse8.5;tomcat 6.0;Windows XP;XFire1.2接下来我们看怎么用XFire来构建一个webservice服务端。
1.创建工程打开MyEclipse 8.5,新建一个WebService工程。
如下图Webservice服务端名称Webservice服务路径什么都不用改动services.xml2.创建webserice服务.MyServiceTestImpl.java代码如下:Service.xml配置文件如下:3.测试服务端测试服务器我们采用Tomcat, 需要将做好的服务端打包部署到tomcat上,然后启动. 在进行测试.可以看到,我们服务端提供了一个名叫“sayHello”的接口.我们点击这个方法名.在下面填入字符串. 点击GO如下这样服务端就返回一个字符串. 说明我们服务端测试通过.4.创建客户端代码创建客户端可以用MyEcilse自带的创建客户端方式.去创建. 比较简单. 傻瓜式操作.这里我就不在示范. 我采用手写的方式写一个客户端.这样有助于大家理解.也能加深记忆.(1)创建一个工程. MyserviceCilent 添加XFire架包. 工程架构如下.(2)创建接口实现类.IMyServiceTest.java. 源码如下:package service.client;//Generated by MyEclipsepublic interface IMyServiceTest {public String sayHello(String user);}MyServiceTestImpl.java 源码如下:package service.client;//Generated by MyEclipsepublic class MyServiceTestImpl implements IMyServiceTest { public String sayHello(String user) {return"您好,"+user;}}(3)写测试类.ClientTest.java 源码如下:public static void main(String [] args){Service serviceModel = newObjectServiceFactory().create(IMyServiceTest.class);XFire xfire = XFireFactory.newInstance().getXFire();XFireProxyFactory factory = new XFireProxyFactory(xfire); String serviceUrl ="http://10.222.22.97:8080/MyServiceTest/services/MyServiceTest";IMyServiceTest client = null;try {client = (IMyServiceTest) factory.create(serviceModel, serviceUrl);} catch (MalformedURLException e) {System.out.println("Client call webservice has exception: "+ e.toString());}String result1 =client.sayHello("张三");System.out.print(result1);}直接执行后会返回以下结果.5.现在一个简单的webservice已经开发完成. 当然有的同学会提出. 只可以传递字符串类型吗?当然不是. 后续我还为大家在写传递对象类型. 集合类型. 数组类型. 敬请期待.谢谢!有什么问题,可以联系我. 邮箱:zhubox1j7253@很高兴能和你探讨.。
xfire披荆斩棘什么意思“披荆斩棘”是一个成语,意思是劈开丛生的荆条,斩除挡道的棘刺。
形容在创业过程中或前进途中,克服重重困难。
也比喻战胜巨大困难。
这里用了三个典故。
《晋书·桓温传》记载:东晋时期,桓温任征西将军、荆州刺史等职。
他有很多随从,其中有两位叫做王述和殷浩,都是博学之士。
他们到江陵去拜见桓温。
桓温让殷浩介绍自己家乡的情况,以便更好地与当地人民相处。
殷浩讲完后,桓温又问王述。
殷浩回答说,王述就像月亮傍晚时分出来那样,光辉皎洁;而桓温则象太阳早晨初升时那么明亮。
桓温听了之后,连声赞叹说:“妙极!妙极!我一向认为你对本朝的历史了解得非常清楚,原来只是知其然而不知所以然呀!”《世说新语·言语篇》上记载了另外一段关于此事的佳话。
谢安当权时,有个叫管宁的隐士在荆州刺史王述手下担任主簿。
有次谢安请管宁吃饭,席间对他十分恭敬,并且询问他的志趣,谈话涉及当时许多重要政治问题。
管宁神态自若,如对平日一般侃侃而谈。
接着,谢安举杯劝饮,并以此问管宁,他慨然答道:“你能坐得住吗?”后来这句话用来比喻内心惶恐却强作镇定,亦指不切实际的空想。
因为两者皆可借来表示谦虚谨慎,凡事不敢越雷池半步。
现代汉语中,它被用来描写开拓进取、努力奋斗的精神面貌。
披荆斩棘——比喻不畏艰险,勇往直前,历经坎坷。
含义:具有挑战性的工作是需要冒风险的。
开拓性的工作往往会遇到困难和阻碍,需要不断拼搏,才能获得成功。
马克思说过:“科学需要一个人贡献出毕生的精力。
”在这些风云变幻、波涛汹涌的浪尖上,最能磨练人的意志。
一帆风顺的船是没有的。
遇到困难、挫折甚至失败怎么办?在困境中,应该顽强拼搏,迎难而上,“在逆境中锻炼,在艰苦中奋斗”,人们才会成长起来。
学习也一样,遭受到困难,不要害怕退缩,你只要坚持一下,挺过去,迈过这道坎儿,就会觉得豁然开朗;不能闯过去,一蹶不振,你终究是弱者!不论何种形式的学习都不能消除困难,但有助于消除困难。
author: calvin,smallnest1.概述网站:Smallnest写的XFire初级中文教程。
官方网站的User Guide和Quick Start。
JavaWorld的介绍文章XFire是与Axis 2并列的新一代WebService框架。
之所以并称为新一代,因为它:∙支持一系列Web Service的新标准--JSR181、WSDL2.0 、JAXB2、WS-Security等;∙使用Stax解释XML,性能有了质的提高。
XFire采用Woodstox作Stax实现;∙Easily Create Services from POJOs;∙Spring的结合;∙灵活的Binding机制,包括默认的Aegis,xmlbeans,jaxb2,castor。
其中第3,4,5项对一个Pragmatic的应用很重要。
SpringSide就是使用了这三样,组合了一个比Axis简单得多的WebService最简做法。
关注一个WebService框架,通常关注Java代码遵循什么接口和规范,做什么XML配置,最后执行什么命令来发布一个Web Service,另外还关注Java类如何绑定为XML与其他语言沟通,下面将分别介绍XFire里的最简做法。
2.WebService的最快创建2.1.抽取WebService用的窄接口BookManger.java只须为POJO即可,不需要含任何WebService相关代码。
为它抽取一个for WebService的窄接口BookService.java。
窄接口一方面满足了由于安全原因,不愿意整个XXXManager所有方法导出为Web Service 的需求,另一方面,XFire暂时也只支持基于接口的Proxy。
2.2.至简单的Aegis BindingXFire默认的Aegis Binding语法非常简单,int,String,Date等类型的参数和返回值都无需定义,只要定义一下List findBooksByName()的返回值List里的对象是Book就可以了,是我见过最简单的binding定义,大大优于其他以设计复杂为终极目标的方案。
<mapping><method name="findBooksByName"><return-typecomponentType="org.springside.bookstore.domain.Book"/></method></mapping>为了以约定俗成代替配置,所有Service和Entity Bean的binding文件要求命名为xxx.aegis.xml,而且要和原来的类sit together在同一目录里。
具体介绍见Aegis Binding。
2.3.配置Spring 导出Web服务配置文件见applicationContext-webservice.xml ,靠一个XFire Exporter将窄接口导出成Web服务,然后靠Spring MVC的URL Mapper将它绑定到某个URL。
XFire对此还提供了基于XBean的简写法,但我等着Spring2.0,就不上XBean了,抽象出一个parent bean后,其实也差不多了。
<beanclass="org.springframework.web.servlet.handler.SimpleUrlHandlerMappin g"><property name="mappings"><value>/BookService=bookService</value></property></bean><bean id="bookService" parent="baseWebService"><property name="serviceBean" ref="bookManager"/><property name="serviceClass"value="org.springside.bookstore.service.BookService"/></bean><bean id="baseWebService"class="org.codehaus.xfire.spring.remoting.XFireExporter"abstract="true"><property name="serviceFactory" ref="xfire.serviceFactory"/><property name="xfire" ref="xfire"/></bean>此时,XFire就会导出WebService并显示WSDL如下:http://localhost:8080/springside/service/BookService?WSDL另有不依赖于Spring的配置方式,需自行在web.xml配置servlet,在WEB-INF/classes/META-INF/xfire 目录放置services.xml配置文件。
3.Client端代码1.Client的实现同样只需要POJOs ,Service接口和相应的aegis.xml文件public static void main(String[] args) {Service serviceModel = newObjectServiceFactory().create(BookService.class);BookService service = (BookService) newXFireProxyFactory().create(serviceModel,"http://localhost:8080/springside/service/BookSe rvice");List list = service.findBooksByCategory(null);}2.另一种动态Client:Client client = new Client(newURL("/CurrencyConvertor.asmx?WSDL"));Object[] results = client.invoke("ConversionRate", new Object[] {"BRL", "UGX"});3. 第三种方式可以尝试使用XFire的WSDL->Server/Client Side代码的ant命令生成基于Jaxb2绑定的Stub。
4.Web Service的单元测试XFiire提供了AbstractXFireSpringTest测试类,无须启动Web容器也能进行测试。
1.protected ApplicationContext createContext()方法你必须实现这个方法将返回定义的ApplicationContext对象。
例如:protected ApplicationContext createContext() {return ClassPathXmlApplicationContext(newString[]{"classpath*:applicationContext*.xml"});}2. 测试服务端通过invokeService 调用一段写好的web service请求(XML format),可以访问web service,并得到返回的docuemnt,可以调用assertValid验证结果是否正确。
Document doc = invokeService("BookService","/org/springside/xfire/BookService.FindBooksByName.xml");assertNoFault(doc);addNamespace("ss","");assertValid("//ss:Book/ss:category/ss:descn= \"Java Book\"", doc);FindBookByName的内容如下:<env:Envelope xmlns:env="/soap/envelope/"> <env:Header/><env:Body><findBooksByName xmlns=""><in1>Java</in1></findBooksByName></env:Body></env:Envelope>另外如果涉及到hibernate操作,可以使用easyMock,也可以像RealDaoControllerTest那样,自行实现openSession、closeSession操作,避免hibernate lazyload的问题。
3.测试客户端代码为了在不启动tomcat的情况下测试客户端代码,则测试代码仍然继承于AbstractXFireSpringTest,使用local的URL进行测试Service serviceModel = newObjectServiceFactory().create(BookService.class);XFireProxyFactory factory = new XFireProxyFactory(getXFire());BookService service = (BookService) factory.create(serviceModel, "xfire.local://BookService");注意两处红色的地方,和普通的Client代码略有不同,是解决不用启动tomcat跑客户端service测试代码的关键,其中xfire.local://BookService中的ServiceName 为被Export的接口名,与Spring MVC的URL Mapping无关。