[英]Error injecting entity manager with Wicket/JPA
我有一個使用Wicket的應用程序用於表示層,並在GlassFish v3.0.1上部署了CDI / Weld,JPA 2.0,EJB 3.1等(Java EE 6)。
當我嘗試使用@EJB將EJB注入到wicket頁面中時,出現以下錯誤:java.lang.IllegalStateException:無法為unitName檢索EntityManagerFactory
當我嘗試使用@Inject進行注入時,出現以下錯誤:java.lang.IllegalStateException:無法將ejb UserRepository的ejbRef轉換為類型類的業務對象
我認為問題出在JPA。 我使用的是與正常工作的JSF應用程序所使用的完全相同的配置,因此我對可能出現的問題感到迷惑。 連接池已正確設置並通過GlassFish正確ping通,我在類路徑中包括了wicket-weld,甚至嘗試對wicketstuff-javaeeapi使用舊的Java EE 5 wicketstuff項目,其結果相同。
任何幫助,將不勝感激。
如果出現異常:
無法檢索unitName的EntityManagerFactory
這可能意味着它沒有檢測到您的persistence.xml
文件。 確保它在WEB-INF\\classes\\META-INF
目錄中。
通過轉到GlassFish中的管理控制台,轉到“應用程序”部分,查看應用程序是否顯示類似[ejb, web, weld, jpa]
,可以驗證您的應用程序已啟用JPA。 如果未顯示jpa
則找不到您的JPA配置文件。
總是可以嘗試通過其標准的“ java:global”名稱來查找EJB。 那至少應該讓您排除檢票口作為問題的可能根源,並使您更接近工作系統。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.