Spring是目前最流行的JavaEE Framework但是使用Spring的SpringWS开发WebService却十分繁琐XFire是一个简化WebService开发的开源项目通过Spring和XFire的结合可以大大简化基于Spring Framework的应用中的WebService开发
Spring和XFire可以通过多种方式结合下文介绍的是笔者常用的一种简单而实用的方法所用的Spring版本为XFire版本为
配置XFire Servlet
在webxml中加入如下配置
<servlet>
<servletname>XFireServlet</servletname>
<servletclass>
dehausxfirespringXFireSpringServlet
</servletclass>
</servlet>
<servletmapping>
<servletname>XFireServlet</servletname>
<urlpattern>/servlet/XFireServlet/*</urlpattern>
</servletmapping>
<servletmapping>
<servletname>XFireServlet</servletname>
<urlpattern>/services/*</urlpattern>
</servletmapping>
配置Spring的监听器同基于spring的Web项目一样Spring的监听器是必不可少的
<contextparam>
<paramname>contextConfigLocation</paramname>
<paramvalue>
classpath:org/codehaus/xfire/spring/xfirexml
/WEBINF/applicationContextxml
</paramvalue>
</contextparam>
<listener>
<listenerclass>
orgsprntextContextLoaderListener
</listenerclass>
</listener>
以下是完整的webxml配置文件
<?xml version= encoding=UTF?>
<webapp version=
xmlns=//java/xml/ns/jee
xmlns:xsi=instance
xsi:schemaLocation=
app__xsd>
<contextparam>
<paramname>contextConfigLocation</paramname>
<paramvalue>
classpath:org/codehaus/xfire/spring/xfirexml
/WEBINF/applicationContextxml
</paramvalue>
</contextparam>
<listener>
<listenerclass>
orgsprntextContextLoaderListener
</listenerclass>
</listener>
<servlet>
<servletname>XFireServlet</servletname>
<servletclass>
dehausxfirespringXFireSpringServlet
</servletclass>
</servlet>
<servletmapping>
<servletname>XFireServlet</servletname>
<urlpattern>/servlet/XFireServlet/*</urlpattern>
</servletmapping>
<servletmapping>
<servletname>XFireServlet</servletname>
<urlpattern>/services/*</urlpattern>
</servletmapping>
</webapp>
定义接口及实现服务
定义接口这个接口中定义要通过WebService暴露的方法
package soft;
publicinterface HelloWS {
public String sayHello(String sb);
}
实现服务
package soft;
publicclass HelloWSImp implements HelloWS {
public String sayHello(String sb) {
// TODO Autogenerated method stub
returnHello +sb;
}
}
配置服务
将上文中实现的服务加入到spring的配置文件中
<?xml version= encoding=UTF?>
<beans xmlns=
xmlns:xsi=instance
xsi:schemaLocation=
beansxsd>
<bean id=helloWS class=softHelloWSImp/>
<bean name=helloService class=dehausxfirespringServiceBean>
<property name=serviceBean ref=helloWS/>
<property name=serviceClass value=softHelloWS/>
<property name=inHandlers>
<list>
<ref bean=addressingHandler/>
</list>
</property>
</bean>
<bean id=addressingHandler class=dehausxfireaddressing
AddressingInHandler/>
</beans>