12

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

Servlet load-on-startup 在其web.xml.

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

4

5 回答 5

25

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

应用程序启动/关闭回调

   @Startup
   @Singleton
   public class FooBean {

       @PostConstruct 
       void atStartup() { ... }

       @PreDestroy
       void atShutdown() { ... }

   }

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

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

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

于 2010-06-08T07:56:58.497 回答
4

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

七种方法让事情开始。带有 GlassFish 和 WebLogic 的 Java EE 启动类

于 2012-02-09T15:31:18.277 回答
4

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

@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;
}

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

于 2012-11-12T23:10:44.540 回答
1

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

于 2010-06-18T11:20:57.990 回答
1

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

@Observer("org.jboss.seam.postInitialization")
于 2010-06-27T13:13:55.193 回答