我正在使用Wildfly 10.1.0,我正在尝试将所有EJB更改为仅使用自Jave EE 7以来提供的@Transactional
注释(因为JTA 1.2)。问题是当我的项目有0个EJB时,PersistenceUnit不是由容器启动的。如果我添加一个只有注释@Stateless
的空类,那么它会再次起作用。
这是我的persistence.xml
<persistence version="2.1">
<persistence-unit name="Storage-PU" transaction-type="JTA">
<jta-data-source>java:/PostGreDS</jta-data-source>
<class>SomeEntity<class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
</persistence-unit>
</persistence>
当没有可用的EJB时,PersistenceUnit没有启动的原因是什么?
答案 0 :(得分:3)
当没有可用的EJB时,PersistenceUnit没有启动的原因是什么?
原因是在JEE应用程序中,持久化上下文(包括数据库连接,持久性单元和东西)由EJB容器启动和管理:
因此,仅使用@Transactional
在Web层上注释bean方法不足以启动持久性上下文。请注意,事务也由EJB容器管理,而不是Web容器。
有关JEE架构的更多详细信息,请参阅Java Platform, Enterprise Edition: The Java EE Tutorial。