覆盖ServletContextListener的实现是一个好习惯吗?

时间:2011-05-11 16:24:29

标签: java web-services servlets jax-ws

我使用JAX-WS开发了一个Web服务,并且在web.xml中我已经注册了这个servlet上下文监听器。

<listener>
    <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>

但是,现在我有一些特定的功能要在Web服务UP和Web服务DOWN时完成。我能想到的唯一方法是创建ServletContextlistener并将其添加到web.xml

但是这会覆盖指定的那个(如上面<listener>标签所示)。

我担心这种情况是WSServletContextListener可能已经在实施ServletContextListener方法,并且必须在其中进行特定的工作。

我试图扩展WSServletContextListener类,但最终不能。另一种方法是我可以将WSServletContextListener作为实例成员放入我的侦听器类并包装它提供的所有方法。但这是好的做法吗?

2 个答案:

答案 0 :(得分:4)

制作自己的监听器,并在新的<listener>..</listener>标签中声明。应该按照web.xml中指定的顺序调用这两个侦听器。

答案 1 :(得分:1)

您可以声明多个侦听器,它们将按照web.xml中定义的顺序调用:

<listener>
   <listener-class>com.example.First</listenerclass>
</listener>
<listener>
   <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<listener>
   <listener-class>com.example.Last</listener-class>
</listener>