前言:xfire、spring都是比较流行的技术,这里就不再赘述他们各自的优点;本文着重介绍xfire和spring的整合,不会做太深入的探究。
服务端
<!-- spring配置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/xfire-servlet.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- spring配置 -->
XFire配置部分:xfire配置1使用spring的DispatcherServlet类来作为xfire的处理类,DispatcherServlet的配置文件名默认为[servletname]-servlet,位于WEB-INF目录下,也可以通过namespace参数来指定或者通过contextConfigLocation参数自定义配置文档的位置;这种配置方式只能通过服务名.ws的方式访问,方便隐藏其它的服务接口;xfire配置2使用xfire的XFireSpringServlet类来作为xfire的处理类,这种配置方式可以直接通过接口名访问,也可以访问所有的服务接口。
<!-- XFire 配置 1 使用spring的DispatcherServlet作为xfire的处理类,好处是可以自定义服务的名称并隐藏所有提供的其它接口,客户端只能通过服务名.ws的方式访问-->
<servlet>
<!-- 配合Spring容器中XFire一起工作的Servlet -->
<servlet-name>xfireServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!-- WebApplicationContext命名空间,默认值是[servlet-name]-servlet,对应DispatcherServlet的定义档名称,位于
/WEB-INF下,也可以通过contextConfigLocation参数自定义位置 -->
<param-name>namespace</param-name>
<param-value>xfire-servlet</param-value>
</init-param> <!-- 通过contextConfigLocation参数自定义位置
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/xfire-servlet.xml
</param-value>
</init-param>--> </servlet>
<servlet-mapping>
<servlet-name>xfireServlet</servlet-name>
<!-- 在这个URI下开放Web Service服务 -->
<url-pattern>*.ws</url-pattern>
</servlet-mapping>
<!-- XFire 配置1 --> <!-- XFire 配置2 使用xfire的XFireSpringServlet作为xfire的处理类,可以直接使用接口类名来访问开放的服务,也可以查看所有开发的服务接口 -->
<servlet>
<!-- 配合Spring容器中XFire一起工作的Servlet -->
<servlet-name>xfireServlet2</servlet-name>
<servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xfireServlet2</servlet-name>
<!-- 在这个URI下开放Web Service服务 -->
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
<!-- XFire 配置2 -->
客户端