Это хорошая практика, чтобы переопределить реализацию ServletContextListener? - PullRequest
2 голосов
/ 11 мая 2011

Я разработал веб-сервис с использованием JAX-WS, и в web.xml я зарегистрировал прослушиватель контекста сервлета.

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

Но теперь у меня есть определенная функция, которую нужно выполнить, когда веб-служба работает и когда веб-служба выключена. Единственный способ, которым я мог придумать, это создать ServletContextlistener и добавить его в web.xml.

Но это переопределит тот, который был указан (как показано выше <listener> tag).

В этом случае меня беспокоит то, что WSServletContextListener, возможно, уже реализует методы ServletContextListener и должен выполнять в нем определенную работу.

Я пытался продлить класс WSServletContextListener, но его окончательный вариант не может. Другой способ заключается в том, что я могу взять WSServletContextListener в качестве члена экземпляра в своем классе слушателя и обернуть все методы, предоставленные им. Но разве это хорошая практика?

Ответы [ 2 ]

4 голосов
/ 11 мая 2011

Создайте своего собственного слушателя и объявите его в новом теге <listener>..</listener>.Два слушателя должны вызываться в порядке, указанном в web.xml.

1 голос
/ 11 мая 2011

Вы можете объявить несколько слушателей, они будут вызваны в порядке, определенном в 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>
...