【发布时间】:2013-04-29 08:54:10
【问题描述】:
让我简要介绍一下我想要实现的目标。我想覆盖 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] INFO {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.initializeEntityManagerFactory(PersistenceManager.java:56) 在 org.apache.juddi.config.AppConfig.loadConfiguration(AppConfig.java:94) 在 org.apache.juddi.config.AppConfig.(AppConfig.java:62) 在 org.apache.juddi.config.AppConfig.getInstance(AppConfig.java:183) 在 org.apache.juddi.config.AppConfig.getConfiguration(AppConfig.java:205) 在 org.apache.juddi.Registry.start(Registry.java:55)
【问题讨论】: