Я выполняю сервлет CXF, который предоставляет несколько методов обслуживания.Завершение работы Apache CXFServlet
web.xml:
...
<servlet>
<description>Apache CXF Endpoint</description>
<display-name>cxf</display-name>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
...
Как я могу программно shuting вниз такой экземпляр сервера запущенную, правильно?
public class ServiceImpl {
...
@GET
@Path("/shutdown/")
void shutdown() {
// ...releasing any resources...
// ...terminating any threads...
// TODO terminating running server
...
}
...
Честно говоря, я не забочусь о нарушении HTTP-запроса, когда сервлет в настоящее время отключается. Но я заинтересован в отправке веб-контейнера сигнала выключения. Нет ли удобного API? В разделе [Tomcat отключается закрывающая банка] (http://stackoverflow.com/a/25992568/2138953) Я читал, что вызов '' System.exit (0) '' не был бы подходящим подходом. – PAX
@PAX вам нужно быть более конкретным. Что вы хотите закрыть? Один сервлет (который я предположил) или весь сервер/jvm? Какой сервер вы используете? Кот? –
Я использую Tomcat в качестве веб-контейнера. Моя цель - изящно закрыть весь сервлет CXF. Конечно, перед закрытием все ресурсы должны быть освобождены, а сначала запущены задачи пула потоков, прежде всего. Выключение должно усиливать две вещи: 1. Прекратить подавать дополнительные запросы, 2. Разрешить замену базовой реализации сервлета, которая обслуживает запросы. Наконец, сервлет снова можно перезапустить. – PAX