使用Wicket / JPA注入实体管理器时出错

时间:2010-08-01 15:24:55

标签: java jpa ejb wicket

我有一个使用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:无法将ejbRef for ejb UserRepository转换为类型为

的业务对象

我认为问题源于JPA。我正在使用与我正常使用的JSF应用程序使用的完全相同的配置,因此我很遗憾问题可能是什么。连接池设置正确并通过GlassFish正确ping通,我在类路径中包含了wicket-weld,我甚至尝试使用旧的Java EE 5 wicketstuff项目获得wicketstuff-javaeeapi,结果相同。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果你得到例外:

  

无法检索unitName

的EntityManagerFactory

这可能意味着它没有检测到您的persistence.xml文件。确保它在WEB-INF\classes\META-INF目录中。

您可以转到GlassFish中的管理控制台,验证您的应用是否启用了JPA,转到“应用”部分,看看它是否为您的应用显示[ejb, web, weld, jpa]。如果它没有显示jpa,则它找不到您的JPA配置文件。

答案 1 :(得分:0)

总是可以尝试通过其标准的“java:global”名称来查找EJB。至少应该让你排除wicket作为问题的可能来源,让你更接近工作系统。