初识XFire发布pojo webservice
XFire 是 codeHaus 组织提供的一个开源框架,它构建了 POJO 和 SOA 之间的桥梁,主要特性就是支持将 POJO 通过非常简单的方式发布成 Web 服务,这种处理方式不仅充分发挥了 POJO 的作用,简化了 Java 应用转化为 Web 服务的步骤和过程,也直接降低了 SOA 的实现难度,为企业转向 SOA 架构提供了一种简单可行的方式。
XFire 目前最新的版本是 1.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 等项目的支持等。
使用过axis2,对比发现xfire真的很快捷、很方便,学习起来也比较容易
xfire发布pojo webservice有2种方式:
1.通过WEB-INF\classes\META-INF\xfire\services.xml文件发布pojo
WEB-INF\classes\META-INF\xfire\services.xml
<beans xmlns="http://xfire.codehaus.org/config/1.0"><service><name>HelloWorldService</name><namespace>http://vivianj.org/HelloWorldService</namespace><serviceClass>org.vivianj.xfire.pojo.HelloWorldService</serviceClass><implementationClass>org.vivianj.xfire.pojo.HelloWorldServiceImpl</implementationClass></service></beans>
<?xml version="1.0" encoding="ISO-8859-1"?><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"><display-name>XFire Service</display-name><description>基于XFire框架发布Web服务</description><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>
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans><import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/> <bean id="echoBean" name="code"><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans><!-- START SNIPPET: xfire --><bean /></entry><entry key="/HelloWorldService"><ref bean="helloWorld" /></entry></map></property></bean><!--Declare a parent bean with all properties common to both services--><bean id="echo" /></property><property name="xfire"><ref bean="xfire" /></property><property name="serviceBean"><ref bean="echoBean" /></property><property name="serviceClass"><value>org.codehaus.xfire.spring.example.Echo</value></property></bean><bean id="helloWorld" /></property><property name="xfire"><ref bean="xfire" /></property><property name="serviceBean"><ref bean="helloWorldService" /></property><property name="serviceClass"><value>org.vivianj.xfire.pojo.HelloWorldService</value></property></bean><!-- END SNIPPET: xfire --></beans>
<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app><!-- START SNIPPET: xfire --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/log4j.properties</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>xfire</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>xfire</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping><!-- END SNIPPET: xfire --></web-app>