WSServletContenxtListener 和 WSServlet 的职责是什么

What are the duties of WSServletContenxtListener and WSServlet

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

WSServletContenxtListener:

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

WSServlet:

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

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

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

请任何人帮我澄清一下...

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

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

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

希望对您有所帮助。

顺便说一句:从 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