ServletContextListener和WSServlet的职责是什么

时间:2015-01-14 12:52:57

标签: java web-services servlets jax-ws

我正在研究用java编写的Web服务。当我浏览互联网上的一些文章时,我发现上面的两个类已被用于开发SOAP Web服务。文章提到

WSServletContenxtListener:

上面提到的侦听器类(com.sun.xml.ws.transport.http.servlet.WSServletContextListener)是Web服务上下文侦听器,它在初始化应用程序上下文时初始化Web服务上下文并创建Web服务委托用于委派所有未来的Web服务请求,并将它们路由到下面提到的sun-jaxws.xml中定义的适当端点实现。这会将创建的委托存储在容器servlet上下文中,以便其他servlet可以访问该委托。

WSServlet:

servlet定义及其映射用于拦截应被视为Web服务请求的url模式。

类(com.sun.xml.ws.transport.http.servlet.WSServlet)充当调度servlet,它通过从侦听器创建的servlet上下文接收的委托将请求路由到适当的实现类,如上所述

但是我对这两个类完成的不同任务有点混淆。 根据我的知识,我猜WSServlet用于拦截所有传入Web服务的请求,但我对WSServletContenxtListener的职责有疑问

请有人帮我澄清一下......

2 个答案:

答案 0 :(得分:1)

WSServletContenxtListener是一个用于接收有关Web服务上下文侦听器的通知事件的类。

如果您查看类documentaion here,您可以看到以下方法在某个内容触发有关Web服务的通知事件时被调用:

attributeAdded, attributeRemoved , attributeReplaced , contextDestroyed , contextInitialized , createContainer , createDelegate .

希望能帮助。

答案 1 :(得分:0)

BTW:从Servlet 3.0 API开始,不再需要web.xml。 Metro已经支持动态servlet注册。在非Java EE模式下(使用sun-jaxws.xml),它将自动创建注册默认的JAX-WS Servlet。看到 http://ics.upjs.sk/~novotnyr/blog/2068/deploying-jax-ws-services-on-java-7-and-tomcat-7