我有一个应用程序,它使用Wicket作为表示层,并在GlassFish v3.0.1上部署了CDI/Weld、JPA2.0、EJB3.1等(JavaEE6)。
当我尝试使用@EJB将EJB注入到wicket页面时,我得到了以下错误: java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory for unitName
当我尝试使用@Inject进行注入时,我得到以下错误: java.lang.IllegalStateException:无法将ejb的ejbRef转换为UserRepository类型的业务对象
我认为问题源于JPA。我使用的配置与JSF应用程序使用的配置完全相同,但工作正常,因此我不知道问题可能是什么。连接池被正确地设置并通过GlassFish正确地using通,我已经在类路径中包含了wicket-weld,我甚至尝试使用旧的JavaEE5 wicketstuff项目来实现wicketstuff-javaeeapi,也得到了同样的结果。
任何帮助都将不胜感激。
发布于 2010-08-03 03:35:04
如果你得到了异常:
无法检索unitName的EntityManagerFactory
这可能意味着它没有检测到您的persistence.xml文件。确保它在WEB-INF\classes\META-INF目录中。
您可以通过转到GlassFish中的管理控制台,转到应用程序部分,并查看它是否为您的应用程序显示类似[ejb, web, weld, jpa]的内容,来验证您的应用程序是否启用了JPA。如果它没有显示jpa,那么它就没有找到您的JPA配置文件。
发布于 2010-08-02 06:51:15
可以总是尝试通过其标准的"java:global“名称来查找EJB。这至少应该让您排除wicket作为问题的可能来源,并让您更接近工作系统。
https://stackoverflow.com/questions/3382551
复制相似问题