在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")