EJB3:在应用程序启动时插入初始数据的正确方法,如Grails Bootstrap?

时间:2014-07-13 16:54:07

标签: java-ee ejb ejb-3.0 ejb-3.1 ejb-3.2

与Grails中的Bootstrap.groovy类似,如何在应用启动时添加一些初始数据?

因为在@PostContstruct方法中,EntityManager在无状态会话bean中不可用(或者我做错了什么?),那么插入一些初始数据的正确方法是什么?

E.g。我想在应用程序启动时在我的系统中添加一个Admin帐户。

1 个答案:

答案 0 :(得分:3)

  

因为在@PostContstruct方法中,EntityManager不可用

事实并非如此,@PostConstruct通常是从db检索视图初始数据的正确位置。

当应用程序启动时,您可以使用Singleton EJB进行启动操作,例如添加管理员帐户,并使用@Startup注释EJB:

@Startup
@Singleton
public class MySingleton implements Serializable {
    @PersistenceContext
    private EntityManager em;

    @PostConstruct
    public void init() {
        // here you can perform queries or transactions
    }
}

Enterprise Java Beans与Singleton一样,默认情况下是事务性的。对于Java EE 7,如果CDI bean使用@Transactional进行注释,则它们将成为事务性的。

<强>链接