【问题标题】:Call method in EJB on JBoss startup [duplicate]JBoss启动时EJB中的调用方法[重复]
【发布时间】:2010-06-08 07:41:12
【问题描述】:

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

Servlet 在其web.xml 中使用load-on-startup 标记。

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

【问题讨论】:

    标签: java jboss jakarta-ee ejb lifecycle


    【解决方案1】:

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

    来自Application Startup / Shutdown Callbacks

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

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

    有一些特定于应用程序的扩展,例如lifecycle listener 用于 Glassfish。也许JBoss有这样的事情。

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

    【讨论】:

    • 另外,可以始终使用具有启动/停止生命周期方法的 MBean。 MBean 被注入所需的 EJB,并从中调用所需的任何方法。
    • 谢谢。两个很棒的帖子。我最终得到了一个“ServletWrapper”。但重构已提上日程。干杯!
    • 我正在使用 jboss 5.1(不确定它是否支持 EJB3.1)我可以使用此技术在部署时调用方法吗?谢谢。
    【解决方案2】:

    本文描述了在服务器启动时调用功能的七种不同方式。不过,并非所有人都可以使用 JBoss。

    Seven ways to get things started. Java EE Startup Classes with GlassFish and WebLogic

    【讨论】:

      【解决方案3】:

      如果您的目标是 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;
      }
      

      有关这方面的更多信息,包括其他生命周期事件,可以找到here

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 2017-06-02
            • 2013-03-13
            • 2011-02-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-01-08
            相关资源
            最近更新 更多