【问题标题】:Is it a good practice to override implementation of ServletContextListener?重写 ServletContextListener 的实现是一个好习惯吗?
【发布时间】:2011-08-23 11:27:21
【问题描述】:

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

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

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

但这会覆盖指定的那个(如上图&lt;listener&gt; 标签所示)。

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

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

【问题讨论】:

    标签: java web-services servlets jax-ws


    【解决方案1】:

    制作你自己的监听器并在一个新的&lt;listener&gt;..&lt;/listener&gt; 标签中声明它。应该按照 web.xml 中指定的顺序调用这两个侦听器。

    【讨论】:

      【解决方案2】:

      你可以声明多个监听器,它们将按照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>
      

      【讨论】:

        猜你喜欢
        • 2016-01-03
        • 2017-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-22
        • 2020-08-25
        • 2015-05-08
        • 2010-09-11
        相关资源
        最近更新 更多