现在的位置: 首页 > 综合 > 正文

Spring整合jaxws基于handles验证

2014年10月20日 ⁄ 综合 ⁄ 共 2722字 ⁄ 字号 评论关闭

                               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> 

抱歉!评论已关闭.