我正在研究用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的职责有疑问
请有人帮我澄清一下......
答案 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