#java #maven #jax-rs #pom.xml
#java #maven #jax-rs #pom.xml
Вопрос:
Прежде всего, я новичок в JAX-RS. Я пытаюсь создать серверную часть, и я пошел на pom.xml реализация. Чтобы быть более конкретным, у меня есть этот класс
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("webapi")
public class MyApp extends Application {
}
и я хочу знать, как контролировать, когда оно запускается, и в конечном итоге остановить его запуск.
Что-то вроде этого:
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("webapi")
public class MyApp extends Application {
@Override
public void onStartup() {
if (!Utils.isConfDataValid())
exit(1);
}
}
У меня только сейчас появилось представление о любых событиях приложения или о чем-то подобном в JAX-RS.
Спасибо!
Ответ №1:
Обратите внимание, что определенные типы событий или перехватов зависят от сервера веб-приложений.
В этом случае JAX-RS
это не имеет отношения к тому, что вы ищете.
Также обратите внимание, что я не рекомендую использовать System.exit
или завершать работу подобного приложения.
Поскольку оно JAX-RS
основано на Servlet
стеке, вы можете зарегистрировать ServletContextListener
реализацию для выполнения кода при запуске контекста.
public class CustomServletContextListener implements ServletContextListener {
@Override
public void contextInitialized(final ServletContextEvent servletContextEvent) {
// Context startup
}
@Override
public void contextDestroyed(final ServletContextEvent servletContextEvent) {
// Context shutdown
}
}
Этот прослушиватель можно зарегистрировать, пометив его с помощью, @WebListener
если вы находитесь в Servlet 3
среде
@WebListener
public class CustomServletContextListener implements ServletContextListener {
В противном случае вам нужно использовать старомодный web.xml
файл, как <listener-class>
.
Комментарии:
1. Спасибо! Могу ли я каким-либо образом вручную остановить приложение? Или, по крайней мере, ограничить его запуск?
2. @CosminStoian Вы могли бы вызвать исключение RuntimeException (это зависит от сервера приложений). Или вы могли бы установить параметр и проверить его внутри фильтра, который возвращает сообщение об ошибке с указанием причины. В любом случае вам нужно будет вручную перезапустить его (или попросить контейнер сделать это).