J2EE之巅

 

Spring集成XFire开发WebService

 

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

SpringXFire可以通过多种方式结合,下文介绍的是笔者常用的一种简单而实用的方法。所用的Spring版本为2.0,XFire版本为1.2.6

1 配置XFire Servlet

web.xml中加入如下配置:

<servlet>

    <servlet-name>XFireServlet</servlet-name>

  

    <servlet-class>

        org.codehaus.xfire.spring.XFireSpringServlet

    </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>

2 配置Spring的监听器,同基于springWeb项目一样Spring的监听器是必不可少的。

    <context-param>

        <param-name>contextConfigLocation</param-name>

       <param-value>

            classpath:org/codehaus/xfire/spring/xfire.xml,

            /WEB-INF/applicationContext.xml

       </param-value>

    </context-param>

<listener>

 <listener-class>

    org.springframework.web.context.ContextLoaderListener

 </listener-class>

</listener>  

以下是完整的web.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"

    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">   

    <context-param>

        <param-name>contextConfigLocation</param-name>

       <param-value>

            classpath:org/codehaus/xfire/spring/xfire.xml,

            /WEB-INF/applicationContext.xml

       </param-value>

    </context-param>

<listener>

 <listener-class>

    org.springframework.web.context.ContextLoaderListener

 </listener-class>

</listener>  

 <servlet>

    <servlet-name>XFireServlet</servlet-name>

  

    <servlet-class>

        org.codehaus.xfire.spring.XFireSpringServlet

    </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>

3 定义接口及实现服务

定义接口,这个接口中定义要通过WebService暴露的方法

package org.ccsoft;

publicinterface HelloWS {

    public String sayHello(String sb);

}

实现服务

package org.ccsoft;

publicclass HelloWSImp implements HelloWS {

    public String sayHello(String sb) {

       // TODO Auto-generated method stub

       return"Hello "+sb;

    }

}

4 配置服务

将上文中实现的服务,加入到spring的配置文件中。

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    <bean id="helloWS" class="org.ccsoft.HelloWSImp"/>

    <bean name="helloService" class="org.codehaus.xfire.spring.ServiceBean">

    <property name="serviceBean" ref="helloWS"/>

    <property name="serviceClass" value="org.ccsoft.HelloWS"/>

    <property name="inHandlers">

      <list>

        <ref bean="addressingHandler"/>

      </list>

    </property>

</bean>

       <bean id="addressingHandler" class="org.codehaus.xfire.addressing.AddressingInHandler"/>

</beans>

好了现在你可以通过http://127.0.0.1:8080/XFireWS1/services/HelloWS?wsdl来验证是否部署成功了。

—————————————————————————————————————


SCEA SCBCD MCSD
IBM Certified Specialist RUP
IBM Certified Solution Designer OOA&D UML v2
北京天融信软件架构师
SUN,Microsoft培训中心特邀高端教师
常年提供架构咨询服务
chaocai2001@yahoo.com.cn 010-82776427

posted on 2007-09-17 18:01 超越巅峰 阅读(9450) 评论(5)  编辑  收藏 所属分类: Java EE

评论

# re: Spring集成XFire开发WebService 2007-09-17 18:20 千里冰封

配XML终究不爽,还是EJB3.0里面的元数据注释好一些  回复  更多评论   

# re: Spring集成XFire开发WebService 2007-09-17 18:29 sitinspring

代码乱了一些,怎么不试试"插入代码"按钮呢?  回复  更多评论   

# re: Spring集成XFire开发WebService[未登录] 2007-09-17 21:31 bluesky

用spring 的ws啊  回复  更多评论   

# re: Spring集成XFire开发WebService 2007-09-18 08:59 阿蜜果

呵呵,前阵子也写了篇类似的文章,不过还没放上blog。
:)  回复  更多评论   

# re: Spring集成XFire开发WebService 2012-03-06 15:44 断线的风筝

都启动不了,报错org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'addressingHandler' defined  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(12)

随笔分类(54)

随笔档案(59)

文章分类(2)

文章档案(1)

相册

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜