2017-10-12 113 views
0

我有多個EJB模塊,每個模塊需要在數據庫中默認一些數據,創建一些目錄或文件。如何在EJB模塊啓動時執行一些代碼

我想,如果我創建@Startup @singleton EJB,我會做這個工作,但這是正確的方法嗎? ejb將保留在內存中,即使我僅在啓動時使用它

回答

1

是的,使用啓動單例bean通常是執行初始化的正確方法,因爲@Startup不能與@Stateless一起使用。

如果你想將數據插入到數據庫中,另一種選擇是由persistence.xml中運行SQL腳本:

<property name="javax.persistence.sql-load-script-source" 
     value="META-INF/sql/data.sql" /> 

這顯然有缺點,你不能管理數據庫插入Java代碼。欲瞭解更多信息,請瀏覽:http://docs.oracle.com/javaee/7/tutorial/persistence-intro005.htm

如果您想了解更多有關的EJB(和單身),在這裏看到:http://download.oracle.com/otn-pub/jcp/ejb-3.1-fr-eval-oth-JSpec/ejb-3_1-fr-spec.pdf

+0

我做了這個樣子。我在meta-inf中有sql文件和其他腳本,json或屬性文件,但persistence.xml位於另一個存檔中。我有一個標準的持久性單元名稱,所以我可以注入一個實體管理器並按行讀取文件:按照這種方式,sql查詢隨模塊一起移動,並且對jdbc連接沒有約束,唯一的約束是持久單元名稱 –

相關問題