我正在嘗試更新最初用Java6編寫的企業應用程序的小型alpha版本。現在我想用:SSB中的EntityManager null
- 的Java 7
- JSF最新
- Maven的
- EJB 3.2的Glassfish
到目前爲止,我可以部署在Glassfish我EAR文件沒有問題。我的webapp可以加載,第一個JSF頁面導航很好。而且我的JSF支持bean似乎也可以加載我的無狀態會話bean。調試表明,我可以從一個SSB到另一個來自我的支持bean。我錯過的最後一步也是最後一步是我的實體管理器和持久性。
我的類annoated與@Stateless
,我使用:
@PersistenceContext(unitName = "myProjectPU")
protected EntityManager entityManager;
但實體管理器爲空:(
我的persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="myProjectPU" transaction-type="JTA">
<jta-data-source>jdbc/myProject</jta-data-source>
<properties>
<property name="javax.persistence.schema-generation.create-database-schemas" value="true" />
</properties>
</persistence-unit>
</persistence>
任何想法是否persistence.xml必須位於ear Maven模塊中?現在它位於ejb maven模塊中,其中使用實體管理器的類位於其中。
我通常有我的persistence.xml內使用它的模塊...還要確保它在這個路徑下 - > src \ main \ resources \ META-INF \ persistence.xml – Schokea
謝謝,但多數民衆贊成在哪裏我的persistence.xml是。所以這似乎是有效的。我猜註釋是正確的,無狀態會話bean正在被加載罰款。還有什麼可能導致實體管理器爲空? – Arquillian