如何在EJB模块启动时执行一些代码



我有多个EJB模块,每个模块都需要数据库中的一些默认数据,创建一些目录或文件。

我想,如果我创建一个@Startup@singletEJB,我会完成这项工作,但这是正确的方式吗?ejb将保留在内存中,即使我只在启动时使用它

是的,使用启动单例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(和singleton)的信息,请参阅此处:http://download.oracle.com/otn-pub/jcp/ejb-3.1-fr-eval-oth-JSpec/ejb-3_1-fr-spec.pdf

最新更新