[英]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.