XFire完整入门教程
- 格式:doc
- 大小:180.50 KB
- 文档页数:7
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>。
Eclipse下使用Xfire创建WebService入门示例(上)关键字: Eclipse Xfire Java WebServiceWeb Service概述什么是Web ServiceWeb Service是能够基于网络,尤其是基于万维网(World Wide Web)直接调用的能够处理离散任务或连续任务的软件模型。
目前较为流行的应用是,由一家公司对其专有数据进行封装,提供Web Service,然后其它公司就可以通过Internet来动态使用这些在线服务。
这为未来全球的电子商务发展提供了新的标准和架构。
Web Service架构Web Service是独立的、模块化的应用,能够通过因特网来描述、发布、定位以及调用。
在Web Service的体系架构中包括三个角色:服务提供者(Service Provider)、服务请求者(Service Requestor)、服务注册器(Service Registry)。
角色间主要有三个操作:发布(Publish)、查找(Find)、绑定(Bind)。
下图清楚的描述了三种角色,以及角色之间的作用关系。
图示一:图示二:这个流程图显示了Web Services中的核心技术是如何工作的。
这里,Provider是提供服务的应用程序组件,Requester是使用服务的客户端程序。
很多其他技术也会参与到交互中,但是这个图只显示了在Web Services环境中必需的核心技术组件。
Web Service协议标准简单对象访问协议(SOAP)SOAP是Simple Object Access Protocol的缩写,是一种基于XML的不依赖传输协议的表示层协议,用来在分散或分布式的应用程序之间方便地以对象的形式交换数据。
在SOAP的下层,可以是HTTP/HTTP,也可以是SMTP/POP3,还可以是为一些应用而专门设计的特殊的通信协议。
SOAP包括三个主要部分:² SOAP封装结构:定义了一个整体框架,以表示消息中包含什么内容,谁来处理这些内容以及这些内容是可选的或是必需的。
XFire完整入门教程网上关于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 入门轻松将 POJO 发布成 Web 服务Java 社区一直试图将 POJO 的作用发挥到极致,降低 Java 应用实现的难度,最近的尝试是将 EJB3.0 建立在 POJO 之上;另一方面,SOA 是目前 Java 社区炙手可热的名词,非常多的企业都在努力应用和实施 SOA;XFire 为这两方面的需求提供了一种魔术般的解决方式,我们很快能够发现使用 XFire 创建和发布Web 服务可以直接基于 POJO,将烦人的继承关系和一大堆其他可能的约束丢在一边。
POJO、SOA 概述被重新审视的 POJOPOJO(Plain Old Java Object,简单 Java 对象)是 Java 社区中最早的成员(回想您学习 Java 时第一个兴奋的时刻,那个简单的 "Hello World!" 例子),也是最简单、最容易实现的方式。
然而现实中 Java 的发展已经远远超越了 POJO 的范围,成为面向对象技术应用中最成功的编程语言,尤其是继承、多态的应用为我们造就了一大批开发框架(如 Struts)和标准(如 EJB),随之而来的就是实现的复杂化,我们必须面对一大堆继承关系的限制。
比如说:要开发一个基于 Struts 的应用,我们必须了解 Struts 特定的继承关系如 ActionForm、ValidateActionForm;要开发一个 EJB 应用,我们必须继承 EJBObject、SessionEJB 等。
为了抛开这些限制,降低 Java 应用实现的难度,Java 社区开始重新审视 POJO 的价值,试图将 POJO 的作用发挥到极致,最新的努力是 EJB3.0。
Java 社区将EJB3.0 设计为基于 POJO,而不是为他准备更多的继承关系等限制。
让人爱恨交加的 SOASOA 已经成为了目前 Java 社区中炙手可热的名词,几乎所有的软件厂商都在讨论它,为他提供解决方案和产品支持,大部分的企业也已经在企业内部实施或者正在考虑实施 SOA。
使用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 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是从底层全部重新实现,使用了新的扩展性更好模块架构。
基于XFire的WebService讲解基于XFire的WebService目录1.前言 (3)1.1.概述 (3)1.2.名词解释 (3)2.技术讲解 (3)2.1.服务端 (3)2.1.1.搭建服务端 (3)2.1.1.1.增加jar包 (3)2.1.1.2.修改web.xml (4)2.1.1.3.增加Xfire的services.xml (4)2.1.1.4.访问测试 (5)2.2.客户端 (6)2.2.1.生成调用服务类 (6)2.2.2.调用服务 (7)2.3.消息的截获 (7)2.4.使用工具软件调用WebService (7)1.前言1.1.概述本文讲解的是使用XFire的技术搭建WebService以及调用WebService的服务。
1.2.名词解释WebService:WebService 是一种web应用程序分支,它们是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。
WebService可以执行从简单的请求到复杂商务处理的任何功能。
一旦部署以后,其他WebService应用程序可以发现并调用它部署的服务。
WebService完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准。
WSDL:Web Services Description Language的缩写,是一个用来描述Web服务和说明如何与Web 服务通信的XML语言。
WSDL是WebService的描述语言,用于描述WebService的服务,接口绑定等,为用户提供详细的接口说明书。
XFire:XFire是codeHaus组织提供的一个开源框架,它构建了POJO和SOA之间的桥梁,主要特性就是支持将POJO通过非常简单的方式发布成Web服务,这种处理方式不仅充分发挥了POJO的作用,简化了Java应用转化为Web服务的步骤和过程,也直接降低了SOA的实现难度,为企业转向SOA架构提供了一种简单可行的方式。
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的方法。
信步漫谈之Xfire—基础介绍XFire 是与 Axis 2 并列的新⼀代 Web Service 框架,通过提供简单的 API ⽀持 Web Service 各项标准协议,能够快速地开发 Web Service 应⽤。
和其他 Web 服务引擎相⽐,XFire 的配置⾮常简单,可以⾮常容易地和 Spring 集成。
以下以⼀个实例讲解如何编写⼀个 Xfire 的服务端与客户端:xfire版本:xfire-distribution-1.2.6.zip⽬录结构:关键代码:User.javaIHelloService.javaHelloService.javaClientTest.javaservices.xmlweb.xml导⼊ jar 包:将 xfire-all-1.2.6.jar 以及 lib ⽬录下的 jar 包全部导⼊即可。
services.xml ⽂件默认的存放⽬录是 WEB-INF/META-INF/xfire 下或 WEB-INF/classes/META-INF/xfire 下,如果是后者,那么实际项⽬中META-INF 应放置于 src ⽬录下:这样,部署到服务器中后 META-INF ⽂件夹就会存在于 WEB-INF/classes/ ⽬录下。
如果要⾃⼰指定 services.xml ⽂件路径,可以将services.xml 路径配置在 web.xml ⽂件中,如下:<servlet><servlet-name>XFireServlet</servlet-name><servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class><!--The servlet will by default look for the configuration onthe classpath in "META-INF/xfire/services.xml". You canoverride it with this parameter. Seperate multiple configuration files with a comma.--><!-- 默认会在classpath的META-INF/xfire/下查找services.xml⽂件,可以覆盖这个参数,指定多个配置⽂件--><init-param><param-name>config</param-name><param-value>xfire-services.xml</param-value></init-param></servlet>插⼊⼀段 init-param 配置,param-name 为 config,指定 services.xml ⽂件的路径以及⽂件名。
Axis2,CXF,xifire1. Axis2.x (3)1.1. 开发准备工作 (3)1.1.1. 环境 (3)1.1.2. 单独启动AXIS2服务 (4)1.1.3. 将axis2-1.6.2-bin.zip中的项目打成axis2.war包 (4)1.1.4. Axis2脚本 (5)1.1.5. 安装eclipse插件(可选) (7)1.1.6. axis2-bin文件目录结构 (8)1.1.7. 部署axis2.war到tomcat (8)1.1.8. 上传services(Uploading Services) (9)1.2. Axis2开发部署 (9)1.2.1. 编写服务器代码,和配置文件 (10)1.2.2. 发布 (11)1.2.3. 通过class文件生成wsdl文件(java2wsdl) (13)1.2.4. 通过wsdl文件生成Java访问代码(wsdl2java) (13)1.2.5. 调用:Axis2开发WebService客户端的3种方式 (14)1.2.6. PS:配置文件介绍 (21)1.3. 大病系统ESB接口开发 (25)1.3.1. esb接口标准 (26)1.3.2. esb接口开发 (31)1.3.3. esb接口调试测试 (53)1.3.4. esb接口发布 (53)2. CXF (53)2.1. 准备工作 (54)2.2. 开发示例 (54)2.2.1. 编写服务端接口 (55)2.2.2. 编写服务实现 (56)2.2.3. 编写webServiceApp.java类来暴露web服务 (57)2.2.4. 启动服务 (57)2.2.5. 编写客户端访问服务 (57)2.2.6. 测试 (58)2.2.7. 集成到spring (58)2.2.8. 通过wsdl文件生成客户端和服务器端代码 (61)3. xfire (62)3.1. 准备工作 (62)3.2. 开发步骤 (62)3.2.1. 建立目录结构 (62)3.2.2. 添加依赖包 (63)3.2.3. 编写服务端代码 (63)3.2.4. 配置web.xml (66)3.2.5. 创建xfire配置文件 (67)3.2.6. services.xml的作用 (68)3.2.7. 在服务器上运行服务 (69)4. Axis与XFire的比较 (72)4.1. XFire与Axis1性能的比较 (72)4.2. XFire与Axis2的比较 (72)5. cxf与axis2比较 (73)6. WSDL文件 (74)6.1. 抽象定义 (74)6.2. 具体定义 (74)7. JAXB (76)7.1. Java SE中的JAXB (76)7.2. 使用 (77)7.3. 缺省的数据类型绑定 (77)7.4. 代码示例 (78)1.Axis2.xWeb Service是现在最适合实现SOAP的技术,而Axis2是实现Web Service的一种技术框架(架构)。
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();如果已经知道调用的服务在本地时,我们可以采取下面方法(本地传输)来调用,这种方法可以提高调用服务的速度,减少调用服务的延迟时间。
Java WebService框架之XFire使用说明声明:此文档只为做学习交流用,如果你有任何异议或更好的想法,欢迎你在群里讨论或者与我讨论!希望能够帮到你!WebService这个字眼,或许大家听起来,并不陌生,一般做过几年开发经验的程序员,几乎都跟它打过交道,首先,我要说明的是,WebService并不是java的特权,也就是说,并不是java只有WebService,.net有,C#有。
等等不罗嗦,首先我得让大家知道,WebService是干嘛用的,从字面意思理解就是web服务,其实,说白了,Web Services就是发布的、完成其特定需求的、在线应用服务。
其他公司或应用软件能够通过Internet来访问并使用这项在线服务。
WebService的主要目标是跨平台的可互操作性。
他独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。
(相关详细解释,大家可以百度的文库)我举个例子,或许大家就明白了,我举个它的应用,比如说,现在有这么一个需求:WebService应用案例一:张三传递给李四某个城市的名字比如说北京,李四反馈给张三北京的天气预报为:晴,王五传递给李四的城市名字济南,李四反馈给王五济南的天气预报为:阴;赵六传递给李四武汉。
等等。
但是,无论是谁想给李四传递城市的名字,必须遵循李四开放出来的一个发送地址,要不然你找不到李四,李四也收不到你的请求城市。
那么,在该示例中,无非就是想实现的一个功能就是,任何人传递给李四一个城市的相关名字,李四反馈给请求者该城市的天气情况,前提是,按照李四公布给大家的发送地址,那么,所有向李四发送请求城市的人,都会收到李四反馈的请求的城市的天气情况,那么这就是一个典型的webservice的调用,它与平台无关,跟每一个系统都无关,是独立的在线服务,那么,在此例中,每一个向李四发送请求的人,都是客户端,而李四所实现的接受城市,反馈回天气预报的功能,就是webservice的服务断,而李四提供的发送地址,就是大名鼎鼎的访问Webservice得到WSDL地址再给大家举一个例子:WebService应用案例二:有两套系统,A系统为用。
xfl使用手册摘要:1.XFL 文件格式简介2.XFL 文件的创建与编辑3.XFL 文件的导入与导出4.XFL 文件的属性设置与应用5.常见问题与解决方案正文:1.XFL 文件格式简介XFL(XFire Language)是一种基于XML 的语言,用于描述Adobe XFire 框架中的数据结构和配置信息。
XFL 文件是XFire 项目的配置文件,它包含了应用程序的逻辑、界面和数据模型。
XFL 文件格式灵活,易于维护和扩展,因此被广泛应用于Adobe XFire 的开发中。
2.XFL 文件的创建与编辑要创建一个XFL 文件,你需要使用Adobe XFire 开发工具。
在XFire 开发工具中,你可以通过以下步骤创建一个新的XFL 文件:(1)新建一个XFL 文件:在XFire 开发工具中,选择“新建”菜单下的“XFL 文件”,给文件命名并保存。
(2)设计界面:在XFire 开发工具的“设计”视图中,可以创建和编辑界面元素,如按钮、文本框等。
(3)编写逻辑:在XFire 开发工具的“代码”视图中,可以编写应用程序的逻辑,如数据验证、事件处理等。
(4)测试与调试:在XFire 开发工具的“调试”视图中,可以运行和调试应用程序,查找并修复潜在的问题。
3.XFL 文件的导入与导出XFL 文件可以方便地导入和导出。
你可以将一个XFL 文件导入到另一个XFL 文件中,也可以将XFL 文件导出为XML 文件或其他格式。
(1)导入XFL 文件:在XFire 开发工具中,选择“文件”菜单下的“导入”,选择要导入的XFL 文件,点击“打开”按钮。
(2)导出XFL 文件:在XFire 开发工具中,选择“文件”菜单下的“导出”,选择要导出的XFL 文件,点击“保存”按钮。
4.XFL 文件的属性设置与应用XFL 文件包含了许多属性设置,如样式、数据验证等。
这些属性可以应用于界面元素和数据模型,以实现所需的功能和效果。
(1)样式设置:在XFire 开发工具的“设计”视图中,可以为界面元素设置样式,如字体、颜色等。
XFire WebService开发快速起步环境:XFire-1.2.6JDK1.5MyEclipse 6.5Tom cat-5.5.27Windows XP Professional简体中文版软件下载地址:[url]/org/codehaus/xfire/xfire-distribution/1.2.6/ xfire-distribution-1.2.6.zip[/url][url]/tom cat/tom cat-5/v5.5.27/bin/apache-t om cat-5.5.27.zip[/url]有关WebService的概念、原理、数据发现、描述、绑定等过程、方式也不说了。
这里就只关注如何快速开发出来一个通用的、易懂的Hello World例子。
以下是开发步骤:1、创建工程打开MyEclipse 6.5,新建一个WebService工程。
如下图然后一路next,直到完成。
创建完成后,打开生成的web.xml文件,可以看到,XFire已经配置好了。
<?xml version="1.0"encoding="UTF-8"?><web-app xmlns="/xml/ns/javaee"xmlns:xsi="http://ww /2001/XMLSchem a-instance"version="2.5"xsi:schem aLocation="htt p:///xml/ns/javaee [url]/xml/ns/javaee/we b-app_2_5.xsd[/url]"><servlet><servlet-nam e>XFireServlet</servlet-nam e><servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet </servlet-class><load-on-startup>0</load-on-startup></servlet><servlet-m apping><servlet-nam e>XFireServlet</servlet-nam e><url-pattern>/services/*</url-pattern></servlet-m apping><welcom e-file-list><welcom e-file>index.jsp</welcom e-file></welcom e-file-list></web-app>2、创建WebService服务创建两个个包“wstest.server”和“wstest.client”,用来保存服务端和客户端程序。
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完整入门教程本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的相应目录下面。
4、因为我们用到了List等集合类型,所以需要定义Mapping关系,文件名为:src/test/IHelloService.aegis.xml,代码如下:1<?xml version="1.0" encoding="UTF-8"?>2<mappings>3<mapping>4<method name="test">5<parameter index="0" componentType="ng.String"/>6<return-type componentType="test.Course"/>7</method>8</mapping>9</mappings>请注意,此文件一定要放到与IHelloService.java相同的目录下面,否则会出错。
5、在Web.xml中配置XFire需要用到的Servlet,代码如下:1<?xml version="1.0" encoding="UTF-8"?>2<web-app version="2.4" xmlns="/xml/ns/j2ee"3 xmlns:xsi="/2001/XMLSchema-instance"4 xsi:schemaLocation="/xml/ns/j2ee5 /xml/ns/j2ee/web-app_2_4.xsd">67<servlet>8<servlet-name>XFireServlet</servlet-name>9<servlet-class>10 org.codehaus.xfire.transport.http.XFireConfigurableServlet 11</servlet-class>12</servlet>1314<servlet-mapping>15<servlet-name>XFireServlet</servlet-name>16<url-pattern>/servlet/XFireServlet/*</url-pattern>17</servlet-mapping>1819<servlet-mapping>20<servlet-name>XFireServlet</servlet-name>21<url-pattern>/services/*</url-pattern>22</servlet-mapping>232425<welcome-file-list>26<welcome-file>index.jsp</welcome-file>27</welcome-file-list>28</web-app>此时Web Service的服务端就开发完成了。
我们来看看客户端的代码吧,也很简单,如下:1package test;23import .MalformedURLException;4import java.util.ArrayList;5import java.util.List;67import org.codehaus.xfire.XFireFactory;8import org.codehaus.xfire.client.XFireProxyFactory;9import org.codehaus.xfire.service.Service;10import org.codehaus.xfire.service.binding.ObjectServiceFactory;1112public class Client {1314public static void main(String[] args) {1516 Service srvcModel = new ObjectServiceFactory()17 .create(IHelloService.class);18 XFireProxyFactory factory = new XFireProxyFactory(XFireFactory19 .newInstance().getXFire());2021 String helloWorldURL = "http://localhost:8080/xfiretest/services/HelloS ervice";22try {23 IHelloService srvc = (IHelloService) factory.create(srvcModel,24 helloWorldURL);25 System.out.println(srvc.sayHello("Robin"));2627 User u=new User();28 u.setName("RRRRR");29 Course c=srvc.choose(u);30 System.out.println(c.getName());3132 List al=new ArrayList();33 al.add("1212");34 al.add("2222");35 List t=srvc.test(al);36for (int i = 0; i < t.size(); i++) {37 Course co=(Course)t.get(i);38 System.out.println(co.getName());39 }404142 } catch (MalformedURLException e) {43 e.printStackTrace();44 }4546 }4748}49以上代码均无注释,因为都非常简单,呵呵。