jpa - EJB3 实体类的单独 jar

标签 jpa deployment ejb-3.0 classnotfoundexception glassfish-2.x

当我将 EJB3 实体(用 @Entity 注释)与 EJB 模块分离并将它们放入单独的 jar 文件中时,我的 Persistence.xml 文件应该放在哪里,是在我的 EJB 模块中还是在我的Entity.jar 中?我应该如何部署Entity.jar文件?它不是 EJB 模块,因为它没有任何 EJB,只有 JPA 实体。

我正在使用 Glassfish,我所做的是将Entity.jar 放入 /lib/applibs 目录中,并在部署 EJB 模块时声明它使用该库。

但是部署失败并显示:

Internal Exception: java.lang.ClassNotFoundException: com.pedra.Role
javax.persistence.PersistenceException: Exception [TOPLINK-28018] (Oracle TopLink Essentials - 2.1 (Build b31g-fcs (10/19/2009))): oracle.toplink.essentials.exceptions.EntityManagerSetupException
Exception Description: predeploy for PersistenceUnit [SignonPU] failed.
Internal Exception: Exception [TOPLINK-30007] (Oracle TopLink Essentials - 2.1 (Build b31g-fcs (10/19/2009))): oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException
Exception Description: An exception was thrown while loading class: com.pedra.Role to check whether it implements @Entity, @Embeddable, or @MappedSuperclass.
Internal Exception: java.lang.ClassNotFoundException: com.pedra.Role

那么为什么在Entity.jar库中找不到这个类呢?

最佳答案

看起来应该可以工作。

我想说:

  • 检查您的entity.jar是否确实位于lib/applibs中;
  • 检查部署 EJB 模块时是否正确指定了entity.jar;
  • 重建你的 jar ;
  • 听起来很有趣,通过管理控制台取消部署您的 ejb 模块并重新启动 Glassfish,然后再次部署您的模块;

关于jpa - EJB3 实体类的单独 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16563237/

相关文章:

java - JPA:一张表有两个不同的数据库

amazon-web-services - 将 Bitbucket 管道变量传递到 Cloudformation

java - 使用 Javapackager 自定义 .app 包的资源目录

带 Postgres 9.0 的 Eclipse Helios Java EE

java - JPA:可以在@OneToMany 上添加额外的 JOIN 约束

java - 使用 JPA 时出现“java.lang.NoSuchFieldError”

ant - 如何使用 Ant 将 portlet 部署到远程 WebSphere Portal?

postgresql - 如何从 EJB3 扩展持久性上下文访问 @Lob 字段

java - jboss - 在模块调用中找不到类

java - EJB3 SQL注入(inject)