java - 控制 JAX-RS 应用程序启动
问题描述
首先,我是 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 中的任何类似事件。
谢谢!
解决方案
请注意,某些类型的事件或挂钩取决于 Web 应用程序服务器。
在这种情况下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>
.