让我简要介绍一下我想要实现的目标。我想覆盖 Apache JUDDI 中使用的方法 EntityManager.persist() 以满足我的要求之一。
因此,我想用一个包装器类覆盖默认的 openjpa 持久性提供程序 impl 类,该包装器类将在内部直接使用相应的 org.apache.openjpa.persistence.PersistenceProviderImpl 方法。(这与 MyPersistenceProvider extends PersistenceProviderImpl 非常相同)。我在 persistence.xml 中添加了自定义持久性提供程序。在启动时我发现日志说
信息:找到持久性提供程序“org.test.uddi.persistance.CustomPersistenceProviderImpl”。将不使用 OpenJPA。
这意味着我的班级被选为提供者。但是 $subject 发生了。知道为什么吗?以下是完整的堆栈跟踪。
[2013-04-29 13:32:22,470] 信息 {org.wso2.carbon.core.deployment.DeploymentInterceptor} - 部署 Axis2 服务:UDDIReplicationService {super-tenant} 信息:找到持久性提供程序“org.test.uddi.persistance .CustomPersistenceProviderImpl”。将不使用 OpenJPA。[2013-04-29 13:32:22,595] 错误 {org.apache.juddi.config.PersistenceManager} - entityManagerFactory 创建失败 javax.persistence.PersistenceException:尝试以下发现的实现后,没有可用于“juddiDatabase”的持久性提供程序:org .apache.openjpa.osgi.OSGiPersistenceProviderImpl 在 javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:180) 在 javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:70) 在 org.apache.juddi.config.PersistenceManager。