Jakarta ee 在JAX-RS/JavaEE应用程序启动时执行操作

Jakarta ee 在JAX-RS/JavaEE应用程序启动时执行操作,jakarta-ee,jax-rs,Jakarta Ee,Jax Rs,是否有某种方法可以检查何时启动/部署JAX-RS/JavaEE应用程序 此时,我想检查数据库是否已初始化。否则,只有在数据库未初始化时,我才需要初始化它,并且需要在JavaEE应用程序启动时检查它 因此,我需要知道是否有任何方法可以捕获JAX-RS/JavaEE应用程序何时启动 有什么想法吗?虽然这可能不是你想做的事情,但是最好在一个bean中使用@Singleton和@Startup,它可以注入一个数据库,尽管这可能不是你想做的事情,这类事情最好在bean中使用@Singleton和@Star

是否有某种方法可以检查何时启动/部署JAX-RS/JavaEE应用程序

此时,我想检查数据库是否已初始化。否则,只有在数据库未初始化时,我才需要初始化它,并且需要在JavaEE应用程序启动时检查它

因此,我需要知道是否有任何方法可以捕获JAX-RS/JavaEE应用程序何时启动


有什么想法吗?

虽然这可能不是你想做的事情,但是最好在一个bean中使用
@Singleton
@Startup
,它可以注入一个数据库,尽管这可能不是你想做的事情,这类事情最好在bean中使用
@Singleton
@Startup
来完成,它可以注入数据库

至少有三种方法可以实现:

从ServletAPI使用 由于JAX-RS构建在Servlet API之上,下面的代码将实现这一目的:

@WebListener
公共类StartupListener实现ServletContextListener{
@凌驾
公共void contextInitialized(ServletContextEvent事件){
//在应用程序启动期间执行操作
}
@凌驾
公共无效上下文已销毁(ServletContextEvent事件){
//在应用程序关闭期间执行操作
}
}
使用和从CDI 将JAX-RS与CDI一起使用时,您可以具有以下功能:

@ApplicationScoped
公共类StartupListener{
公共void init(@public)
@已初始化(ApplicationScoped.class)ServletContext(上下文){
//在应用程序启动期间执行操作
}
公共空间销毁(@0)
@已销毁(ApplicationScoped.class)ServletContext(上下文){
//在应用程序关闭期间执行操作
}
}
请注意,您必须从
javax.enterprise.context
包中使用,而不是从
javax.faces.bean
包中使用

使用和从EJB 在EJB中使用JAX-RS时,您可以尝试:

@启动
@独生子女
公共类StartupListener{
@施工后
公共void init(){
//在应用程序启动期间执行操作
}
@发情前期
公共空间销毁(){
//在应用程序关闭期间执行操作
}
}

至少有三种方法可以实现:

从ServletAPI使用 由于JAX-RS构建在Servlet API之上,下面的代码将实现这一目的:

@WebListener
公共类StartupListener实现ServletContextListener{
@凌驾
公共void contextInitialized(ServletContextEvent事件){
//在应用程序启动期间执行操作
}
@凌驾
公共无效上下文已销毁(ServletContextEvent事件){
//在应用程序关闭期间执行操作
}
}
使用和从CDI 将JAX-RS与CDI一起使用时,您可以具有以下功能:

@ApplicationScoped
公共类StartupListener{
公共void init(@public)
@已初始化(ApplicationScoped.class)ServletContext(上下文){
//在应用程序启动期间执行操作
}
公共空间销毁(@0)
@已销毁(ApplicationScoped.class)ServletContext(上下文){
//在应用程序关闭期间执行操作
}
}
请注意,您必须从
javax.enterprise.context
包中使用,而不是从
javax.faces.bean
包中使用

使用和从EJB 在EJB中使用JAX-RS时,您可以尝试:

@启动
@独生子女
公共类StartupListener{
@施工后
公共void init(){
//在应用程序启动期间执行操作
}
@发情前期
公共空间销毁(){
//在应用程序关闭期间执行操作
}
}
“我需要初始化它”-这到底是什么意思?您需要插入夹具数据还是什么?还是创建模式?或者这与设置数据库连接有关?“我需要初始化它”-这到底意味着什么?您需要插入夹具数据还是什么?还是创建模式?或者这与设置数据库连接有关?