Spring整合jaxws基于handles验证
Spring整合jaxws基于handles验证
总结:关于Spring整合jaxws基于handles验证,在网上看了较多资料,也花了很长时间才得以成功。有很多人说用【HandlerChain(file = "handler-chain.xml") 标记拦截请求,当我试了多次,都没实现拦截】【另一个是通过spring代理进行拦截,这个方法成功了,可参考:http://stackoverflow.com/questions/15016541/how-to-config-jax-ws-handler-in-spring】,这里主要将如何创建handles步骤,及关键点:
参考API:https://jax-ws-commons.java.net/spring/handler.html
步骤
1、下载springjaxws.jar整合包
2、在web.xml中配置:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 部署webservice,基于jaxws监听器 -->
<servlet>
<servlet-name>jaxws-servlet</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSSpringServlet</servlet-class>
< /servlet>
3、创建public class TKHandler implements SOAPHandler<SOAPMessageContext>{} 继承SOAPHandler的所有方法【这个类在代码网上很多,这里就不贴出来了】
4、创建 基于jaxws开发的webservice SEI实现类代码 声明某个类为@WebService,即将它声明为SEI实现类[关于创建ws类,网上资料多,这里就不详细说了]:
@WebService
public class AngleJaxws {
@Method
public String hi(String s){
return s;
}
}
5、最关键步骤:在spring中配置拦截,指定需要拦截的ws类;
<?xml version="1.0" encoding="UTF-8"?>
< beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:core="http://jax-ws.dev.java.net/spring/core"
xmlns:servlet="http://jax-ws.dev.java.net/spring/servlet"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://jax-ws.dev.java.net/spring/core
http://jax-ws.dev.java.net/spring/core.xsd
http://jax-ws.dev.java.net/spring/servlet
http://jax-ws.dev.java.net/spring/servlet.xsd">
<!-- webservice类-->
<bean id="baseJaxws" class="webservice.jaxws.AngleJaxws">
</bean>
<bean id="myHandler" class="webservice.jaxws.handler.TKHandler" />
<servlet:binding url="/AngleService">
<servlet:service >
<core:service bean="#baseJaxws" >
<core:handlers >
<ref bean="myHandler"/> <!--指定handlers拦截-->
</core:handlers>
</core:service>
</servlet:service>
</servlet:binding>
</beans>
6、优点:不需要配置文件,配置还是比较简单。
7、缺点:需要写一长串标签,比如你要配置一个ws需要写好几行标签,不知道能不能简化下,如果能简化那就方便了:
<servlet:binding url="/AngleService">
<servlet:service >
<core:service bean="#baseJaxws" >
<core:handlers >
<ref bean="myHandler"/> <!--指定handlers拦截-->
</core:handlers>
</core:service>
</servlet:service>
</servlet:binding>