首页 > 解决方案 > 控制 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 中的任何类似事件。

谢谢!

标签: javamavenjax-rspom.xml

解决方案


请注意,某些类型的事件或挂钩取决于 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>.


推荐阅读