让我简要介绍一下我想要达到的目标。我想覆盖方法EntityManager.persist(),这是在apache JUDDI中用于我的需求之一。
因此,我想到用包装器类重写默认的openjpa持久性提供程序impl类,该包装器类将在内部直接使用相应的org.apache.openjpa.persistence.PersistenceProviderImpl方法。(这与MyPersistenceProvider扩展PersistenceProviderImpl非常相似)。我在persistence.xml中添加了自定义持久性提供程序。在启动时,我发现日志显示
INFO:找到持久性提供程序"org.test.uddi. persistence . custompersistenceproviderimpl "。OpenJPA将不会被使用。
这意味着我的类被选为提供者。但是$subject出现了。知道为什么吗?以下是完整的堆栈跟踪:
[2013-04-29 13:32:22,470] INFO {org.wso2.carbon.core.deployment.DeploymentInterceptor} -部署Axis2服务:UDDIReplicationService {super-tenant}找到持久性提供程序"org.test.uddi. persistence . custompersistenceproviderimpl "。OpenJPA将不会被使用。[2013-04-29 13:32:22 . 595] ERROR {org.apache.juddi.config.]创建entityManagerFactory失败javajax .persistence. persistenceexception:在尝试以下发现的实现后,"juddiDatabase"没有可用的持久性提供程序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)
目前,jUDDI只支持OpenJPA和Hibernate,并且是这样分发的。最好的办法是联系jUDDI团队,并在https://issues.apache.org/jira/browse/JUDDI