簡體   English   中英

在EJB3.1中執行初始化代碼

[英]Execute initialization code in EJB3.1

我目前在使用Spring多年后遷移到EJB3.1。 我想在EJB中實現的一件事是我的MigrationManager,我找不到匹配的模式。 在Spring中,我有一個處理數據庫模式和數據遷移的bean。 為此,我實現了一個Spring BeanFactoryPostProcessor,因為這樣我注入了數據庫連接,但JPA系統尚未初始化。 所以我可以執行所有遷移步驟,然后讓應用程序完成開始。

如何在EJB3.1中執行類似的操作(使用CDI ...如果這很重要)

克里斯

這是從EJB運行一些初始化代碼的方法:

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

您不需要單獨的應用程序(如上面的評論所示)。

EntityManagers懶得實例化,所以只要你不將EntityManager注入到其他一些啟動代碼中,這就應該讓你有機會在EntityManager實際訪問數據庫之前更新你的數據庫模式。

順便說一句,對於數據庫模式遷移,我建議使用Liquibase ,它可以由ServletContextListener觸發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM