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

发布于 2024-09-12 07:52:40 字数 540 浏览 7 评论 0原文

我有一个使用 Wicket 作为表示层的应用程序,其中包含 CDI/Weld、JPA 2.0、EJB 3.1 等(Java EE 6),部署在 GlassFish v3.0.1 上。

当我尝试使用 @EJB 将 EJB 注入 wicket 页面时,出现以下错误: java.lang.IllegalStateException:无法检索 unitName 的 EntityManagerFactory

当我尝试使用 @Inject 注入时,出现以下错误: java.lang.IllegalStateException: 无法将 ejb UserRepository 的 ejbRef 转换为类类型的业务对象

我相信问题源于 JPA。我使用的配置与 JSF 应用程序使用的配置完全相同,该配置工作正常,因此我不知道问题可能是什么。连接池已正确设置并通过 GlassFish 正确执行 ping,我已将 wicket-weld 包含在类路径中,我什至尝试使用旧的 Java EE 5 wicketstuff 项目作为 wicketstuff-javaeeapi,得到相同的结果。

任何帮助将不胜感激。

I have an app using Wicket for the presentation layer with CDI/Weld, JPA 2.0, EJB 3.1 etc. (Java EE 6) deployed on GlassFish v3.0.1.

When I try to inject an EJB into a wicket page using @EJB I get the following error:
java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory for unitName

When I try to inject using @Inject, I get the following error:
java.lang.IllegalStateException: Unable to convert ejbRef for ejb UserRepository to a business object of type class

I believe the problem is stemming from JPA. I am using the exact same configuration that I used with a JSF application which worked properly, so I am lost as to what the issue could be. The connection pools are set up properly and pinging correctly through GlassFish, I have included wicket-weld on the classpath and I have even tried using the old Java EE 5 wicketstuff project for wicketstuff-javaeeapi with the same results.

Any help would be appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

世界和平 2024-09-19 07:52:40

如果您遇到异常:

无法检索 unitName 的 EntityManagerFactory

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

您可以通过以下方式验证您的应用程序是否已启用 JPA:转至 GlassFish 中的管理控制台,转至“应用程序”部分,查看它是否为您的应用程序显示类似 [ejb, web,weld, jpa] 的内容。如果它没有显示jpa,那么它就没有找到您的 JPA 配置文件。

If you get the exception:

Unable to retrieve EntityManagerFactory for unitName

It might mean it is not detecting your persistence.xml file. Make sure it's in the WEB-INF\classes\META-INF directory.

You can verify that your app has JPA enabled by going to the Admin Console in GlassFish, go to the Applications section and see if it shows something like [ejb, web, weld, jpa] for your app. If it doesn't show jpa then it's not finding your JPA config file.

萌能量女王 2024-09-19 07:52:40

总是可以尝试通过标准的“java:global”名称查找 EJB。这至少应该让您排除检票口作为可能的问题来源,并使您更接近正常工作的系统。

Could always try to lookup the EJB via its standard "java:global" name. That should at least let you rule out wicket as a possible source of issues and get you a little closer to a working system.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文