1

我们有一个应用程序需要在部署结束时进行一些初始化(在 JBoss 7.1.0 实例中),因为只有这样所有必需的服务才能可用(其中有很多)。

我们尝试的一种方法是:

我们有一个单例服务和一个 @Startup 注释,但到目前为止,我们还没有成功地告诉 JBoss 最后创建实例而没有太多麻烦。

我们可以使用@DependsOn,但我们必须维护一个不断增长且已经很大的依赖项列表,因此我们宁愿将其作为最后的手段。

在过去(JBoss 4 和 5),有可能定义对应用程序的依赖(如@Depends("myapp.ear")),这正是我们需要的。

从 JBoss 7 开始,情况发生了变化,但我认为仍有办法做到这一点。

另一种方法是尝试创建我们自己的 JBoss 子系统,该子系统在所有其他子系统启动后调用,但我们无法找到一种方法来等待其他子系统完成后再执行我们需要的操作。

我们还可以考虑哪些其他选择?

4

2 回答 2

1

您可以将带有注释的类@Startup放入不同的 EAR 或更好的 WAR 中。我认为,WAR 将默认部署在任何 EAR 之后,而无需配置任何东西。

在启动类中,您可以只调用实际的初始化,它与应用程序的其余部分一起部署myapp.ear。调用是通过 EJB 本地或远程接口完成的。

于 2012-07-08T06:27:59.357 回答
1

您可以拥有一个servlet,例如BootstrapServlet.java,在您的WEB-INF/web.xml 中使用设置load-on-startup>1 /load-on-startup> 进行定义,并在该servlet 中进行初始化。

于 2012-07-08T04:29:16.450 回答