- 浏览: 2290705 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (357)
- J2EE (49)
- JavaScript (40)
- Spring (19)
- Struts (5)
- CSS (8)
- Hibernate (16)
- Java (67)
- DWR (4)
- JSON (3)
- XFIRE (1)
- Tomcat (1)
- Ant (2)
- 设计模式 (2)
- 经典收藏 (2)
- JSP (10)
- Linux (0)
- WebLogic (11)
- myeclipse (13)
- Buffalo (4)
- 文件上传相关 (1)
- oracle (33)
- html (6)
- JSTL (3)
- SVN (2)
- GIT (1)
- 孙卫琴(Java网络编程精解) (1)
- DOM4J (2)
- Swing (1)
- AJAX (1)
- Eclipse (5)
- 日志组件 (3)
- PowerDesigner (1)
- Jquery (22)
- IT技术开发相关网址 (1)
- Nutz (1)
- 其它 (1)
- Velocity (3)
- WebService (1)
- MySql (2)
- Android (1)
- Maven (2)
- Quartz (11)
- Lucene (1)
- springsource (1)
- Junit (1)
- Activiti (0)
最新评论
-
yzlseu:
拼凑,没有营养
Activiti进阶—分配组任务 -
zhangsenhao:
非常赞!代码很清楚
SpringMVC3.0+MyIbatis3.0(分页示例) -
xiamw2000:
分页写得不对,应该是 : order by ${orderNa ...
SpringMVC3.0+MyIbatis3.0(分页示例) -
sheertewtw:
...
SpringMVC:上传与下载 -
kingtoon:
...
XSS之xssprotect
转载:
http://hi.baidu.com/hero8_8_8/blog/item/969cd3f8241f9e08d8f9fd57.html
XFire 概述
2009-02-06 14:03XFire 概述
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 应用配置
前面的章节中我们下载和安装了 XFire 安装包和所需要的支持环境,现在我们开始学习如何从零开始创建 XFire 应用开发环境。下面的所有配置过程和发布步骤均针对 TOMCAT(版本5.0.30)服务器,如果选择其它的 Servlet 容器,下面的配置过程和步骤可能需要做出调整,请读者根据实际 Servlet 容器的帮助文档进行相应调整。
1、创建 Web 应用目录和基本元素
在 %TOMCAT_HOME%/webapps 目录下创建新的 Web 应用目录 “XFire”
[注] 其中的 %TOMCAT_HOME% 指向 TOMCAT 的安装目录。
在 ”XFire”目录下创建 ”WEB-INF”目录、
在 ” WEB-INF”目录下创建 ”lib”目录和 ”classes”目录
在 ” WEB-INF”目录下创建 Web 应用描述文件 ”web.xml”, ”web.xml”文件的内容见 清单 1-1。
清单 1-1 WEB-INF\web.xml
1、 <?xml version="1.0" encoding="ISO-8859-1"?>
2、 <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
6、
7、 <display-name>XFire实例</display-name>
8、 <description>
9、 基于XFire框架发布Web服务的例子
10、 </description>
11、
12、 </web-app>
2、拷贝 XFire 所需的支持类包文件
拷贝 %XFIRE_HOME%/lib 目录下所有文件到 “1、创建 Web 应用目录和基本元素” 中所创建的 ”lib”目录下,将 %XFIRE_HOME%/XFire-all-1.2.6.jar 文件也拷贝到 “1、创建 Web 应用目录和基本元素” 中所创建的 ”lib”目录下。将 xalan 安装包中的所有 jar 文件和所需要的支持 jar 文件拷贝到相同的 ”lib”目录下。
[注] 为了减少拷贝的 jar 文件的数目,开发者可以根据项目的需要选择需要拷贝的 jar 文件,而不是全部拷贝,如何根据需要选择拷贝合适的类包文件请访问 XFire 站点。
3、配置 XFire 框架运行所需的 Servlet
修改 web.xml 文件,在其中增加如下 Servlet 定义内容。
<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>
4、创建 XFire 框架的服务发布文件 services.xml
在 “1、创建 Web 应用目录和基本元素” 中创建的 classes 目录下新建目录 ”META-INF\xfire”;
在步骤 a) 中新建的 ”xfire”文件目录下创建新文件 services.xml,文件的默认内容如 清单1-2 。
清单 1-2 WEB-INF\classes\META-INF\xfire\services.xml
<beans xmlns="http://XFire.codehaus.org/config/1.0"></beans>
一个简单的xfire配置方法,后面的jar包列表很有用,是必备的jar包列表
xfire 配置指南(服务端)
xfire 配置指南(服务端) :
在xfire框架下写webservice非常简单,他解藕得像webwork。
在xfire框架下任何一个类都可以做webservice,只需配置一下就可以在服务端运行了。
就让我们从WorldHello开始吧
/**
*
* @author Hank Lee
* @version 100000.000001 Beta
* @since JDK 1.5
*/
public class WorldHello {
public String getEcho(){
return “I love you, hank.lee!!”;
}
}
由于时间关系,我已经写好了代码,然后就是配置了。
1.WEB-INF\classes下META-INF\xfire\services.xml,配置如下:
<beans xmlns="”http://xfire.codehaus.org/config/1.0″"><service><name>HankService</name><namespace>http://xfire.codehaus.org/HankService</namespace><serviceclass>hank.lee.WorldHello</serviceclass></service></beans>
2.WEB-INF\web.xml,配置如下:
<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>/services/*</url-pattern></servlet-mapping></web-app>
就这样部署,请移玉指点击浏览器试试 http://yourhost:8080/yourapp/services/HankService?wsdl
你不是发梦,是的,可以运行了。
简单了吧,不过上帝是公平的,要运行以上的例子需要的包是非常多的。
activation-1.0.2.jar
commons-attributes-api-2.1.jar
commons-beanutils-1.7.0.jar
commons-codec-1.3.jar
commons-httpclient-3.0.jar
commons-logging-1.0.4.jar
httpunit-1.6.1.jar
jaxen-1.1-beta-8.jar
jdom-1.0.jar
js-1.5R4.1.jar
jtidy-4aug2000r7-dev.jar
log4j-1.2.6.jar
mail-1.3.3_01.jar
nekohtml-0.9.1.jar
org.mortbay.jetty-5.1.3.jar
qdox-1.5.jar
servlet-api-2.3.jar
spring-1.2.6.jar
stax-api-1.0.jar
stax-utils-snapshot-20040917.jar
wsdl4j-1.5.2.jar
wstx-asl-2.9.jar
xbean-2.1.0.jar
xbean-spring-2.2.jar
xercesImpl-2.6.2.jar
xfire-aegis-1.0.jar
xfire-annotations-1.0.jar
xfire-core-1.0.jar
xfire-spring-1.0.jar
xfire-xmlbeans-1.0.jar
xmlParserAPIs-2.6.2.jar
XmlSchema-1.0.jar
这篇文章很清晰地讲述了xfire的入门过程
◎XFire 使用记
XFire开发Web服务的基本步骤
1) 检验JAVA类的方法和构造函数是否是公共的,一定要是公开的。
2) 将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>
3) 创建services.xml并把它放到WEB-INF/classes/META-INF/xfire目录下,这是默认的做法;也可以将services.xml的路径配置到web.xml文件中。
<servlet><servlet-name>XFire</servlet-name><display-name>XFire Servlet</display-name><servlet-class>
org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class><!--
The servlet will by default look for the configuration on
the classpath in "META-INF/xfire/services.xml". You can
override 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>services.xml</param-value></init-param></servlet>
4) 将XFire和其它第三方库添加到Web应用的WEB-INF/lib目录下。
1) Weblogic8.1中应用XFire,启动wls时,出现java.lang.NoSuchMethodError的解决办法。
首先,将XFire提供的QName JAR(qname.jar)放进WEB-INF/lib目录下。然后,将weblogic.xml文件放到WEB-INF下。
weblogic.xml的内容为:
<weblogic-web-app><container-descriptor><prefer-web-inf-classes>true</prefer-web-inf-classes></container-descriptor></weblogic-web-app>
具体的详细解说,请看XFire的User's Guide.
技巧
1. 如果Web Services的方法的参数是Collections,那就需要建一个Mapping文件,而且Mapping文件的命名为className.aegis.xml,并且与class放在同一个package下。
如:
public interface IConstraceSerice {
boolean editConstraceInfo(List aList);
}
Mapping文件如下:IConstraceService.aegis.xml
<?xml version="1.0" encoding="utf-8"?><mappings><mapping><method name="editConstraceInfo"><parameter index="0" componenttype="java.lang.String"></parameter></method></mapping></mappings><parameter index="0" componenttype="java.lang.String"></parameter>表示第一个参数,里面实际值的类型,这里实际值的类型是java.lang.String.
如果是一个JavaBean,如com.test.TestBean,那以就要写成<parameter index="0" compenttype="com.test.TestBean"></parameter>
2. 如果返回类型是List或Map,并且里面存放的是自定义类的话,则需要增加一个对于服务接口的配置文件。该文件的命名规则是 接口文件名.aegis.xml。例如接口是UserService.java的话,则此配置文件命名为UserService.aegis.xml。注意此配置文件须与接口放在同一目录下面。
<?xml version="1.0" encoding="UTF-8"?><mappings><mapping><method name="getUsers"><return-type componenttype="com.test.domain.User"></return-type></method></mapping></mappings>
getUsers方法返回类型是List,里面装的User对象。对于这种类型的方法,在配置文件中描述了它的返回值类型。
如果返回的类型是Map的话,做法和List一样。但定义的类型,是Map中的Value部分,并且这样的话,Map中Value所存放的对象就必须全部是同一种类啦。
下面给出一个详细的例子:
1)服务接口:
public interface MyService2
{
boolean getInfo();
Collection getCollection(); //method 1
Collection getCollection(int id); //method 2
Collection getCollection(String id); //method 3
Collection getCollectionForValues(String id, Collection c); //method 4
Collection getCollectionForValues(int value, Collection c); //method 5
}
2) Mapping文件内容:
<mappings><mapping><!-- mapping 1 --><method name="getCollection"><return-type componenttype="java.lang.Double"></return-type></method><!-- mapping 2 --><method name="getCollection"><return-type componenttype="java.lang.Float"></return-type><parameter index="0" class="int"></parameter></method><!-- mapping 3 --><method name="getCollectionForValues"><return-type componenttype="java.math.BigDecimal"></return-type></method><!-- mapping 4 --><method name="getCollectionForValues"><parameter index="0" class="java.lang.String"></parameter><parameter index="1" componenttype="java.util.Date"></parameter></method><!-- mapping 5 --><method name="getCollectionForValues"><return-type componenttype="java.util.Calendar"></return-type><parameter index="0" class="int"></parameter><parameter index="1" componenttype="java.lang.Bit"></parameter></method></mapping></mappings>
3. 如果一个方法的返回类型是一个JavaBean,而这个JavaBean当中又存在Collections,那么就需要定义一个与JavaBean相关的Mapping文件,文件名要与JavaBean名相同,如:User.aegis.xmll,并且与JavaBean放在同一个目录.
例子:
1) 服务接口
public interface IYMServiceFacade {
User getUser();
}
2) JavaBean
public class User {
private Strirng userName;
// 这里是一个Collection
private Set rooms;
.....
.....
}
3) Mapping文件(User.aegis.xml)
<?xml version="1.0" encoding="utf-8"?><mappings><mapping><property name="rooms" componenttype="com.powerunion.ymservice.dto.Room"></property></mapping></mappings>
介绍:<property name="rooms" componenttype="com.powerunion.ymservice.dto.Room"></property>
其中的name属性就是JavaBean里面定义的rooms,componentType上面的相同,表示Collections里真正存储的类型.
注:如果服务接口的参数或者返因类型是基本类型(int, float, double等)就不需要创建Mapping文件。
详细的信息见XFire的User's Guide.
4.如果Web Services和客户端运行在同一个JVM上,可以选择使用本地传输,可以大幅提升性能。如:以下指定服务端URL的这行。
String serviceUrl = "http://localhost:8080/YM/services/ContractService";
替换为
String serviceUrl = "xfire.local://ContractService";
5. 用ant task 生成xfire 客户端代码
用xfire不管是配置web service,还是生成客户代码都很方便.
生成客户代码只要在用ant生成就可以了!
build.xml
代码
<?xml version="1.0"?><project default="genfiles" basedir="."><property name="lib" value="WebRoot/WEB-INF/lib"></property><path id="myclasspath"><fileset dir="${lib}"><include name="*.jar"></include></fileset><pathelement location="${genfiles}"></pathelement></path><property name="code_path" value="src"></property><property name="wsdl_path" value="Echo1Service.xml"></property><property name="code_package" value="com.client"></property><target name="genfiles" description="Generate the files"><taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="myclasspath"></taskdef><wsgen outputdirectory="${code_path}" wsdl="${wsdl_path}" package="${code_package}" binding="xmlbeans"></wsgen></target></project>
http://hi.baidu.com/hero8_8_8/blog/item/969cd3f8241f9e08d8f9fd57.html
XFire 概述
2009-02-06 14:03XFire 概述
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 应用配置
前面的章节中我们下载和安装了 XFire 安装包和所需要的支持环境,现在我们开始学习如何从零开始创建 XFire 应用开发环境。下面的所有配置过程和发布步骤均针对 TOMCAT(版本5.0.30)服务器,如果选择其它的 Servlet 容器,下面的配置过程和步骤可能需要做出调整,请读者根据实际 Servlet 容器的帮助文档进行相应调整。
1、创建 Web 应用目录和基本元素
在 %TOMCAT_HOME%/webapps 目录下创建新的 Web 应用目录 “XFire”
[注] 其中的 %TOMCAT_HOME% 指向 TOMCAT 的安装目录。
在 ”XFire”目录下创建 ”WEB-INF”目录、
在 ” WEB-INF”目录下创建 ”lib”目录和 ”classes”目录
在 ” WEB-INF”目录下创建 Web 应用描述文件 ”web.xml”, ”web.xml”文件的内容见 清单 1-1。
清单 1-1 WEB-INF\web.xml
1、 <?xml version="1.0" encoding="ISO-8859-1"?>
2、 <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
6、
7、 <display-name>XFire实例</display-name>
8、 <description>
9、 基于XFire框架发布Web服务的例子
10、 </description>
11、
12、 </web-app>
2、拷贝 XFire 所需的支持类包文件
拷贝 %XFIRE_HOME%/lib 目录下所有文件到 “1、创建 Web 应用目录和基本元素” 中所创建的 ”lib”目录下,将 %XFIRE_HOME%/XFire-all-1.2.6.jar 文件也拷贝到 “1、创建 Web 应用目录和基本元素” 中所创建的 ”lib”目录下。将 xalan 安装包中的所有 jar 文件和所需要的支持 jar 文件拷贝到相同的 ”lib”目录下。
[注] 为了减少拷贝的 jar 文件的数目,开发者可以根据项目的需要选择需要拷贝的 jar 文件,而不是全部拷贝,如何根据需要选择拷贝合适的类包文件请访问 XFire 站点。
3、配置 XFire 框架运行所需的 Servlet
修改 web.xml 文件,在其中增加如下 Servlet 定义内容。
<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>
4、创建 XFire 框架的服务发布文件 services.xml
在 “1、创建 Web 应用目录和基本元素” 中创建的 classes 目录下新建目录 ”META-INF\xfire”;
在步骤 a) 中新建的 ”xfire”文件目录下创建新文件 services.xml,文件的默认内容如 清单1-2 。
清单 1-2 WEB-INF\classes\META-INF\xfire\services.xml
<beans xmlns="http://XFire.codehaus.org/config/1.0"></beans>
一个简单的xfire配置方法,后面的jar包列表很有用,是必备的jar包列表
xfire 配置指南(服务端)
xfire 配置指南(服务端) :
在xfire框架下写webservice非常简单,他解藕得像webwork。
在xfire框架下任何一个类都可以做webservice,只需配置一下就可以在服务端运行了。
就让我们从WorldHello开始吧
/**
*
* @author Hank Lee
* @version 100000.000001 Beta
* @since JDK 1.5
*/
public class WorldHello {
public String getEcho(){
return “I love you, hank.lee!!”;
}
}
由于时间关系,我已经写好了代码,然后就是配置了。
1.WEB-INF\classes下META-INF\xfire\services.xml,配置如下:
<beans xmlns="”http://xfire.codehaus.org/config/1.0″"><service><name>HankService</name><namespace>http://xfire.codehaus.org/HankService</namespace><serviceclass>hank.lee.WorldHello</serviceclass></service></beans>
2.WEB-INF\web.xml,配置如下:
<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>/services/*</url-pattern></servlet-mapping></web-app>
就这样部署,请移玉指点击浏览器试试 http://yourhost:8080/yourapp/services/HankService?wsdl
你不是发梦,是的,可以运行了。
简单了吧,不过上帝是公平的,要运行以上的例子需要的包是非常多的。
activation-1.0.2.jar
commons-attributes-api-2.1.jar
commons-beanutils-1.7.0.jar
commons-codec-1.3.jar
commons-httpclient-3.0.jar
commons-logging-1.0.4.jar
httpunit-1.6.1.jar
jaxen-1.1-beta-8.jar
jdom-1.0.jar
js-1.5R4.1.jar
jtidy-4aug2000r7-dev.jar
log4j-1.2.6.jar
mail-1.3.3_01.jar
nekohtml-0.9.1.jar
org.mortbay.jetty-5.1.3.jar
qdox-1.5.jar
servlet-api-2.3.jar
spring-1.2.6.jar
stax-api-1.0.jar
stax-utils-snapshot-20040917.jar
wsdl4j-1.5.2.jar
wstx-asl-2.9.jar
xbean-2.1.0.jar
xbean-spring-2.2.jar
xercesImpl-2.6.2.jar
xfire-aegis-1.0.jar
xfire-annotations-1.0.jar
xfire-core-1.0.jar
xfire-spring-1.0.jar
xfire-xmlbeans-1.0.jar
xmlParserAPIs-2.6.2.jar
XmlSchema-1.0.jar
这篇文章很清晰地讲述了xfire的入门过程
◎XFire 使用记
XFire开发Web服务的基本步骤
1) 检验JAVA类的方法和构造函数是否是公共的,一定要是公开的。
2) 将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>
3) 创建services.xml并把它放到WEB-INF/classes/META-INF/xfire目录下,这是默认的做法;也可以将services.xml的路径配置到web.xml文件中。
<servlet><servlet-name>XFire</servlet-name><display-name>XFire Servlet</display-name><servlet-class>
org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class><!--
The servlet will by default look for the configuration on
the classpath in "META-INF/xfire/services.xml". You can
override 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>services.xml</param-value></init-param></servlet>
4) 将XFire和其它第三方库添加到Web应用的WEB-INF/lib目录下。
1) Weblogic8.1中应用XFire,启动wls时,出现java.lang.NoSuchMethodError的解决办法。
首先,将XFire提供的QName JAR(qname.jar)放进WEB-INF/lib目录下。然后,将weblogic.xml文件放到WEB-INF下。
weblogic.xml的内容为:
<weblogic-web-app><container-descriptor><prefer-web-inf-classes>true</prefer-web-inf-classes></container-descriptor></weblogic-web-app>
具体的详细解说,请看XFire的User's Guide.
技巧
1. 如果Web Services的方法的参数是Collections,那就需要建一个Mapping文件,而且Mapping文件的命名为className.aegis.xml,并且与class放在同一个package下。
如:
public interface IConstraceSerice {
boolean editConstraceInfo(List aList);
}
Mapping文件如下:IConstraceService.aegis.xml
<?xml version="1.0" encoding="utf-8"?><mappings><mapping><method name="editConstraceInfo"><parameter index="0" componenttype="java.lang.String"></parameter></method></mapping></mappings><parameter index="0" componenttype="java.lang.String"></parameter>表示第一个参数,里面实际值的类型,这里实际值的类型是java.lang.String.
如果是一个JavaBean,如com.test.TestBean,那以就要写成<parameter index="0" compenttype="com.test.TestBean"></parameter>
2. 如果返回类型是List或Map,并且里面存放的是自定义类的话,则需要增加一个对于服务接口的配置文件。该文件的命名规则是 接口文件名.aegis.xml。例如接口是UserService.java的话,则此配置文件命名为UserService.aegis.xml。注意此配置文件须与接口放在同一目录下面。
<?xml version="1.0" encoding="UTF-8"?><mappings><mapping><method name="getUsers"><return-type componenttype="com.test.domain.User"></return-type></method></mapping></mappings>
getUsers方法返回类型是List,里面装的User对象。对于这种类型的方法,在配置文件中描述了它的返回值类型。
如果返回的类型是Map的话,做法和List一样。但定义的类型,是Map中的Value部分,并且这样的话,Map中Value所存放的对象就必须全部是同一种类啦。
下面给出一个详细的例子:
1)服务接口:
public interface MyService2
{
boolean getInfo();
Collection getCollection(); //method 1
Collection getCollection(int id); //method 2
Collection getCollection(String id); //method 3
Collection getCollectionForValues(String id, Collection c); //method 4
Collection getCollectionForValues(int value, Collection c); //method 5
}
2) Mapping文件内容:
<mappings><mapping><!-- mapping 1 --><method name="getCollection"><return-type componenttype="java.lang.Double"></return-type></method><!-- mapping 2 --><method name="getCollection"><return-type componenttype="java.lang.Float"></return-type><parameter index="0" class="int"></parameter></method><!-- mapping 3 --><method name="getCollectionForValues"><return-type componenttype="java.math.BigDecimal"></return-type></method><!-- mapping 4 --><method name="getCollectionForValues"><parameter index="0" class="java.lang.String"></parameter><parameter index="1" componenttype="java.util.Date"></parameter></method><!-- mapping 5 --><method name="getCollectionForValues"><return-type componenttype="java.util.Calendar"></return-type><parameter index="0" class="int"></parameter><parameter index="1" componenttype="java.lang.Bit"></parameter></method></mapping></mappings>
3. 如果一个方法的返回类型是一个JavaBean,而这个JavaBean当中又存在Collections,那么就需要定义一个与JavaBean相关的Mapping文件,文件名要与JavaBean名相同,如:User.aegis.xmll,并且与JavaBean放在同一个目录.
例子:
1) 服务接口
public interface IYMServiceFacade {
User getUser();
}
2) JavaBean
public class User {
private Strirng userName;
// 这里是一个Collection
private Set rooms;
.....
.....
}
3) Mapping文件(User.aegis.xml)
<?xml version="1.0" encoding="utf-8"?><mappings><mapping><property name="rooms" componenttype="com.powerunion.ymservice.dto.Room"></property></mapping></mappings>
介绍:<property name="rooms" componenttype="com.powerunion.ymservice.dto.Room"></property>
其中的name属性就是JavaBean里面定义的rooms,componentType上面的相同,表示Collections里真正存储的类型.
注:如果服务接口的参数或者返因类型是基本类型(int, float, double等)就不需要创建Mapping文件。
详细的信息见XFire的User's Guide.
4.如果Web Services和客户端运行在同一个JVM上,可以选择使用本地传输,可以大幅提升性能。如:以下指定服务端URL的这行。
String serviceUrl = "http://localhost:8080/YM/services/ContractService";
替换为
String serviceUrl = "xfire.local://ContractService";
5. 用ant task 生成xfire 客户端代码
用xfire不管是配置web service,还是生成客户代码都很方便.
生成客户代码只要在用ant生成就可以了!
build.xml
代码
<?xml version="1.0"?><project default="genfiles" basedir="."><property name="lib" value="WebRoot/WEB-INF/lib"></property><path id="myclasspath"><fileset dir="${lib}"><include name="*.jar"></include></fileset><pathelement location="${genfiles}"></pathelement></path><property name="code_path" value="src"></property><property name="wsdl_path" value="Echo1Service.xml"></property><property name="code_package" value="com.client"></property><target name="genfiles" description="Generate the files"><taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="myclasspath"></taskdef><wsgen outputdirectory="${code_path}" wsdl="${wsdl_path}" package="${code_package}" binding="xmlbeans"></wsgen></target></project>
相关推荐
二、Xfire概述 Xfire是一款优秀的Java Web服务框架,它的设计目标是简洁、高效。它支持SOAP、RESTful等多种Web服务标准,并且集成了JAXB(Java Architecture for XML Binding)用于XML和Java对象之间的转换。Xfire的...
#### 一、Spring与XFire概述 Spring框架作为Java平台上最流行的轻量级框架之一,提供了强大的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP)等功能,极大地简化了Java...
1. **XFire概述** XFire是一个开源的Java框架,用于构建和消费Web Services。它分为Service、Transport和Invoker三层结构: - **Service层**:负责服务的注册、管理和生命周期管理,ServiceRegistry接口处理服务的...
**Xfire概述** Xfire是一个开源的轻量级Java Web服务框架,由Codehaus组织维护。它提供了一种简单有效的方式来创建和使用Web服务,特别适合于小型项目或对性能有较高要求的应用场景。Xfire支持SOAP、XML-RPC、...
#### 一、XFire 概述 XFire 是一个基于 Java 的开源轻量级 Web 服务框架,它简化了 Web 服务的开发过程,使得开发者能够更容易地创建和使用 SOAP Web 服务。XFire 的设计目标是使开发 SOAP Web 服务变得更加简单...
《XFIRE简要概述——Spring集成实践》 XFIRE,作为一款早期的Web Service框架,为Java开发者提供了便捷的创建和消费Web Service的能力。本文将深入探讨XFIRE与Spring的集成,以及如何构建一个完整的Web Service系统...
**XFire 演示项目概述** XFire 是一个基于 Java 的开源 Web 服务框架,它为开发人员提供了一种简单、高效的方式来创建和部署 Web 服务。在本项目中,我们有一个使用 JDK 1.7 实现的 Maven 项目,它展示了如何使用 ...
#### 概述 在现代通讯技术的推动下,短信服务已成为企业与用户间快速、高效沟通的重要方式之一。XFIRE作为一款优秀的开源Java Web服务框架,提供了强大的功能来实现短信接口的搭建与管理。本文将从XFIRE短信接口的...
#### 一、概述 本文主要介绍如何在Eclipse平台上使用XFire框架来开发WebService。通过本教程的学习,读者可以了解到搭建环境的具体步骤,以及实现一个简单的WebService——`MathService`的过程。 #### 二、所需技术...
#### 知识点概述 本文档主要介绍了如何在现有的Spring2.5+Hibernate3.2基础上添加XFire来实现WebService服务的配置过程。通过逐步指导的方式,帮助读者了解整个配置流程,并提供相关的截图以辅助理解。 #### 环境...
#### 概述 本文将通过一个具体实例介绍如何在MyEclipse环境下使用XFire框架来快速搭建WebService应用。本例涉及的关键技术包括Eclipse IDE、Tomcat服务器、Java编程语言以及XFire框架。目标是在短时间内完成一个简单...
1. XFire的历史背景和功能概述。 2. 游戏通信软件的设计原理,如网络协议、数据传输和同步机制。 3. C++编程实践,特别是面向对象设计和多线程编程。 4. WebSocket协议的使用,包括连接建立、消息帧处理和断开连接的...
#### 一、概述 在现代软件开发中,整合不同的技术框架以构建高效、可扩展的应用程序变得越来越普遍。其中,**xFire**作为一款轻量级的SOAP容器,提供了丰富的功能来支持Web服务的开发;而**Spring**框架以其强大的...
#### 一、概述 XFire是一款开源的轻量级Web服务框架,它简化了Web服务的开发过程,使得开发者能够更轻松地创建和使用Web服务。本篇文章将详细介绍如何使用XFire来开发Web Services,并提供具体的步骤以及所需的技术...
#### 一、背景与概述 随着Web服务的发展,XFire作为一个轻量级且功能强大的Java Web服务框架,被广泛应用于构建高性能的服务端应用程序。然而,随着时间的推移,XFire的一些功能已经被更先进的框架所替代或改进,...
### WebService学习手册知识点概述 #### 1. WebService简介 ##### 1.1 什么是WebService? WebService可以被理解为一种应用程序,它对外提供了一个可通过Web进行调用的API。这意味着开发者可以通过编程的方式通过...