是否有任何Java EE标准(应用程序服务器交叉兼容)方式如何在初始化期间停止Java EE应用程序,即在@SingleConstruct @Singleton @Startup类的@PostConstruct anotated方法运行期间?
@Singleton
@Startup
public class Initializer {
@PostConstruct
public void checkConfiguration() {
// stop application here
}
}
我搜索软件方法来停止应用程序,整个应用程序服务器,就像System#exit
一样。
答案 0 :(得分:9)
如果从@Startup注释的@Singleton中的@PostConstruct注释方法抛出任何类型的RuntimeException(例如IllegalArgumentException以解决配置错误),那么整个应用程序将无法部署。
来自EJB 3.2规范的§4.8.1“Singleton Session Bean Initialization”:
如果Startup注释出现在singleton会话bean类中,或者如果通过部署描述符指定了单例会话bean需要初始化初始化,则容器必须在应用程序启动序列期间初始化单例会话Bean实例。在任何外部客户端请求(即,源自应用程序之外的客户端请求)被传递到应用程序中的任何企业bean组件之前,容器必须初始化所有此类启动时单例会话Bean。
如果初始化失败,则无法满足。