XFire + Spring构建Web Services服务器端(1)

XFire + Spring构建Web Services服务器端(一)

Spring是目前最流行的JavaEE Framework,但是使用SpringSpring-WS开发WebService却十分繁琐。XFire是一个简化WebService开发的开源项目,通过SpringXFire的结合可以大大简化基于Spring Framework的应用中的WebService开发。下面介绍的是一种比较简单实用的开发方式。

XFire+Spring构建web service服务器端目前我知道的有两种办法,这是第一种

开发环境是:myeclipse8.6,Tomact6.0

Spring版本是2.5 XFire版本是1.2.6

新建web service project项目WS_XFire_Service,下载xfire1.2.6,下载后解压,将xfire-all-1.2.6.jar添加到项目中,lib下面是其他需要的jar包,不过此处注意:lib中包含一个spring-1.2.6.jar,这个jar包会和接下来你所添加的spring.jar冲突,可以删除spring-1.2.6.jar,也可不添加接下来的spring.jar

spring需要的jar包如下:

XFire + Spring构建Web Services服务器端(1)

1、配置XFire Servlet。

在web.xml文件中添加以下内容

 

view plain
  1. <servlet>  
  2.         <servlet-name>XFireServlet</servlet-name>  
  3.         <servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>  
  4.     </servlet>  
  5.   
  6.     <servlet-mapping>  
  7.         <servlet-name>XFireServlet</servlet-name>  
  8.         <url-pattern>/servlet/XFireServlet/*</url-pattern>  
  9.     </servlet-mapping>  
  10.   
  11.     <servlet-mapping>  
  12.         <servlet-name>XFireServlet</servlet-name>  
  13.         <url-pattern>/services/*</url-pattern>  
  14.     </servlet-mapping>  


2、配置Spring监听器

 

 

view plain
  1. <context-param>  
  2.         <param-name>contextConfigLocation</param-name>  
  3.         <param-value>  
  4.             classpath:org/codehaus/xfire/spring/xfire.xml,  
  5.             /WEB-INF/applicationContext.xml  
  6.        </param-value>  
  7.     </context-param>  
  8.   
  9.     <listener>  
  10.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  11.     </listener>  


3、完整的web.xml文件如下

 

 

view plain
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee  
  5.     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  6.   
  7.     <context-param>  
  8.         <param-name>contextConfigLocation</param-name>  
  9.         <param-value>  
  10.             classpath:org/codehaus/xfire/spring/xfire.xml,  
  11.             /WEB-INF/applicationContext.xml  
  12.        </param-value>  
  13.     </context-param>  
  14.   
  15.     <listener>  
  16.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  17.     </listener>  
  18.   
  19.     <servlet>  
  20.         <servlet-name>XFireServlet</servlet-name>  
  21.         <servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>  
  22.     </servlet>  
  23.   
  24.     <servlet-mapping>  
  25.         <servlet-name>XFireServlet</servlet-name>  
  26.         <url-pattern>/servlet/XFireServlet/*</url-pattern>  
  27.     </servlet-mapping>  
  28.   
  29.     <servlet-mapping>  
  30.         <servlet-name>XFireServlet</servlet-name>  
  31.         <url-pattern>/services/*</url-pattern>  
  32.     </servlet-mapping>  
  33.   
  34. </web-app>  


4、编写服务接口及其实现类

 

接口

 

view plain
  1. package com.kuaff.xfire.samples;  
  2.   
  3. public interface MathService {  
  4.     public int add(int p1, int p2);  
  5. }  


实现类

 

 

view plain
  1. package com.kuaff.xfire.samples.impl;  
  2.   
  3. import com.kuaff.xfire.samples.MathService;  
  4.   
  5. public class MathServiceImpl implements MathService {  
  6.     //此处变量str与程序逻辑无关,只是为了验证spring是否成功注入  
  7.     private String str;  
  8.       
  9.     public int add(int p1, int p2) {  
  10.         System.out.println(str);  
  11.         return p1 + p2;  
  12.     }  
  13.   
  14.     public String getStr() {  
  15.         return str;  
  16.     }  
  17.   
  18.     public void setStr(String str) {  
  19.         this.str = str;  
  20.     }  
  21. }  


5、配置服务

 

将上面实现的服务加入到spring配置文件

 

view plain
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
  5.   
  6. <!-- 此处mathWS仅被下文引用-->  
  7.     <bean id="mathWS" class="com.kuaff.xfire.samples.impl.MathServiceImpl">  
  8.         <property name="str" value="123456789" />  
  9.     </bean>  
  10. <!--    此处MathService为被客户端使用的服务名-->  
  11.     <bean name="MathService" class="org.codehaus.xfire.spring.ServiceBean">  
  12.         <property name="serviceBean" ref="mathWS"/>  
  13.         <property name="serviceClass" value="com.kuaff.xfire.samples.MathService"/>  
  14.         <property name="inHandlers">  
  15.           <list>  
  16.             <ref bean="addressingHandler"/>  
  17.           </list>  
  18.         </property>  
  19.     </bean>  
  20.       
  21.     <bean id="addressingHandler" class="org.codehaus.xfire.addressing.AddressingInHandler"/>  
  22. </beans>  

 

部署项目,在浏览器输入http://localhost:8080/WS_XFire_Service/services/MathService?wsdl验证部署是否成功



原文章:http://www.blogjava.net/chaocai/archive/2007/09/17/145932.html

 

1 楼 wst0350 2011-07-29  
XFire + Spring构建Web Services服务器端(1)
2 楼 java_4_ever 2011-07-30  
wst0350 写道
XFire + Spring构建Web Services服务器端(1)

也是初学