代码之家  ›  专栏  ›  技术社区  ›  aelgn

JBoss启动时EJB中的Call方法[duplicate]

  •  12
  • aelgn  · 技术社区  · 16 年前

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

    Servlets拥有 load-on-startup 要在其中使用的标记 web.xml .

    我在找类似的 init() EJB的功能。

    5 回复  |  直到 16 年前
        1
  •  25
  •   Nicholas DiPiazza    13 年前

    在3.1之前,EJB不存在这种情况。在EJB3.1中,可以使用单例bean来模拟:

    从 Application Startup / Shutdown Callbacks :

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

    否则,您将需要依赖旧的好技巧来使用 ServletContextInitializer .

    有一些特定于应用程序的扩展,例如。 lifecycle listener 为了玻璃鱼。也许JBoss有这样的东西。

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

        2
  •  4
  •   Thijs    14 年前

    本文介绍了在启动服务器时调用不同功能的七种方法。但并不是所有的都能与JBoss一起工作。

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

        3
  •  4
  •   lmika    13 年前

    如果您的目标是JBoss5.1,并且您不介意使用 JBoss EJB 3.0 Extensions ,您可以构建一个服务bean来引导EJB。如果您的服务实现了一个用 @Management 注释并声明具有签名的方法 public void start() throws Exception ,JBoss将在启动服务时调用此方法。然后你可以打电话给 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
  •  1
  •   Nayan Wadekar    16 年前

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

        5
  •  1
  •   Andy    16 年前

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