在EJB3.1中执行初始化代码

时间:2013-03-12 09:44:34

标签: java jpa ejb-3.1

我目前正在使用Spring多年后迁移到EJB3.1。我想在EJB中实现的一件事是我的MigrationManager,我找不到匹配的模式。 在Spring中,我有一个处理数据库模式和数据迁移的bean。为此,我实现了一个Spring BeanFactoryPostProcessor,因为这样我注入了数据库连接,但JPA系统尚未初始化。所以我可以执行所有迁移步骤,然后让应用程序完成开始。

如何在EJB3.1中执行类似的操作(使用CDI ......如果这很重要)

克里斯

1 个答案:

答案 0 :(得分:0)

这是从EJB运行一些初始化代码的方法:

@Singleton
@Startup
public class MigrationManager {
    @PostConstruct
    public void migrate() {
       // do work
    }
}

您不需要单独的应用程序(如上面评论中所示)。

EntityManagers懒得实例化,所以只要你不将EntityManager注入到其他一些启动代码中,这就可以让你有机会在EntityManager实际命中之前更新你的数据库模式数据库。

顺便说一下,对于数据库架构迁移,我建议LiquibaseServletContextListener可以触发。{/ p>