在JBoss启动时调用EJB中的方法

我正在寻找在JBoss上部署的EJB的入口点。

Servlet具有要在其web.xml使用的load-on-startup标记。

我正在为EJB搜索类似的init()function。

直到3.1,EJB才存在。 使用EJB 3.1,您可以使用单例bean来模拟:

从应用程序启动/关闭回调 :

  @Startup @Singleton public class FooBean { @PostConstruct void atStartup() { ... } @PreDestroy void atShutdown() { ... } } 

否则,您需要依靠好的老技巧来使用ServletContextInitializer

有一些特定于应用程序的扩展,例如Glassfish的生命周期监听器。 也许JBoss有这样的事情。

但如果我是你,我会尽可能地依赖标准function。 非标准扩展的问题在于您永远不知道可以做什么或不能做什么,例如,您是否可以开始交易,等等。

如果你的目标是JBoss AS 5.1,并且不介意使用JBoss EJB 3.0 Extensions ,那么你可以构建一个服务bean来引导你的EJB。 如果您的服务实现了一个使用@Management批注注释的接口并声明了一个带有签名public void start() throws Exception ,JBoss将在启动该服务时调用此方法。 然后,您可以在要初始化的EJB上调用专用的init()方法:

 @Service public class BeanLauncher implements BeanLauncherManagement { @EJB private SessionBeanLocal sessionBean; @Override public void start() throws Exception { sessionBean.init(); } } @Management public interface BeanLauncherManagement { public void start() throws Exception; } 

有关此内容的更多信息,包括其他生命周期事件,请点击此处 。

本文介绍了在服务器启动时调用function的七种不同方法。 但并非所有这些都适用于JBoss。

有七种方法可以开始。 使用GlassFish和WebLogic的Java EE启动类

Managed Beans可用于在JBoss启动时执行某些过程,您必须在配置文件中添加该托管bean的条目。

您应该能够将以下行添加到要在启动时运行的方法的顶部:

 @Observer("org.jboss.seam.postInitialization")