#java #web-services #servlets #jax-ws
#java #веб-сервисы #сервлеты #jax-ws
Вопрос:
Я разработал веб-сервис с использованием JAX-WS и в web.xml у меня был зарегистрирован этот прослушиватель контекста сервлета.
<listener>
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
Но теперь у меня есть определенная функция, которую нужно выполнять, когда веб-служба запущена и когда веб-служба ОТКЛЮЧЕНА. Единственный способ, который я мог придумать, это создать ServletContextlistener
и добавить его в web.xml
.
Но это переопределило бы тот, который был указан (как показано выше <listener>
тега).
Меня беспокоит в этом случае то, что WSServletContextListener
возможно, уже реализуются ServletContextListener
методы и, должно быть, выполняется определенная работа в нем.
Я пытался расширить WSServletContextListener
класс, но его окончательный вариант так и не удалось. Другой способ заключается в том, что я могу использовать WSServletContextListener
в качестве элемента экземпляра в моем классе listener и переносить все предоставляемые им методы. Но хорошая ли это практика?
Ответ №1:
Создайте свой собственный прослушиватель и объявите его в новом <listener>..</listener>
теге. Два прослушивателя должны вызываться в том порядке, в котором они указаны 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>