Karaf 中 PersistenceProviderImpl 的 ClassCastException
ClassCastException for PersistenceProviderImpl in Karaf
我在 Karaf (4.2.7) 中有一些微服务 运行。
我在启动 Karaf 时遇到此错误。
我认为这不会影响服务,应该很容易修复。
我的意思是服务似乎可以运行,所有配置的数据源也都处于良好状态(我对它们进行了一项一项测试)。
我们不使用 PAX,我们使用数据源的蓝图。
是什么导致了这个错误,我应该如何解决它?
2019-10-17T11:42:08,386 | INFO | FelixStartLevel | JtaPlatformInitiator | 177 - org.hibernate.orm.core - 5.4.2.Final | HHH000490: Using JtaPlatform implementation: [org.hibernate.osgi.OsgiJtaPlatform]
2019-10-17T11:42:08,413 | INFO | FelixStartLevel | PersistenceProviderTracker | 52 - org.apache.aries.jpa.container - 2.7.2 | Found provider for ybkDS org.hibernate.jpa.HibernatePersistenceProvider
2019-10-17T11:42:08,414 | ERROR | FelixStartLevel | Felix | 6 - org.ops4j.pax.logging.pax-logging-api - 1.11.2 | Bundle org.apache.aries.jpa.container [52] EventDispatcher: Error during dispatch. (java.lang.ClassCastException: org.apache.openjpa.persistence.PersistenceProviderImpl cannot be cast to javax.persistence.spi.PersistenceProvider)
java.lang.ClassCastException: org.apache.openjpa.persistence.PersistenceProviderImpl cannot be cast to javax.persistence.spi.PersistenceProvider
at org.apache.aries.jpa.container.impl.PersistenceProviderTracker.addingService(PersistenceProviderTracker.java:84) ~[?:?]
at org.apache.aries.jpa.container.impl.PersistenceProviderTracker.addingService(PersistenceProviderTracker.java:44) ~[?:?]
at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:941) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:870) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:318) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261) ~[osgi.core-6.0.0.jar:?]
at org.apache.aries.jpa.container.impl.PersistenceBundleTracker.trackProvider(PersistenceBundleTracker.java:229) ~[?:?]
at org.apache.aries.jpa.container.impl.PersistenceBundleTracker.findPersistenceUnits(PersistenceBundleTracker.java:213) ~[?:?]
at org.apache.aries.jpa.container.impl.PersistenceBundleTracker.addingBundle(PersistenceBundleTracker.java:98) ~[?:?]
at org.apache.aries.jpa.container.impl.PersistenceBundleTracker.addingBundle(PersistenceBundleTracker.java:44) ~[?:?]
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:469) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:415) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444) ~[osgi.core-6.0.0.jar:?]
at org.apache.felix.framework.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:915) ~[org.apache.felix.framework-5.6.12.jar:?]
at org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:834) [org.apache.felix.framework-5.6.12.jar:?]
at org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:516) [org.apache.felix.framework-5.6.12.jar:?]
at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4579) [org.apache.felix.framework-5.6.12.jar:?]
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2231) [org.apache.felix.framework-5.6.12.jar:?]
at org.apache.felix.framework.Felix.startBundle(Felix.java:2146) [org.apache.felix.framework-5.6.12.jar:?]
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1373) [org.apache.felix.framework-5.6.12.jar:?]
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308) [org.apache.felix.framework-5.6.12.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_192]
我通过来自 Karaf 的 removing/uninstalling OpenJPA
解决了这个问题。
似乎我在 Karaf 中安装了其他功能,这些功能已经涵盖了 JPA。
这些功能是:hibernate、jpa,还有 Apache Aries JPA blueprint 2.5.0.
我很确定其中之一涵盖了 JPA。因此,在这些之上使用 OpenJPA 是导致问题的原因。
注意: 我认为 jbonofre
的回答是正确的。不知道他们为什么让他删除这个答案。
"Don't you have two JPA engines deployed ? Like you use OpenJPA in your bundle/persistence.xml but you have Hibernate also installed ?"
我在看到它之前解决了我的问题,但似乎这正是问题所在,我已经有超过 1 个 JPA 提供程序。所以删除 OpenJPA 解决了这个问题。
我在 Karaf (4.2.7) 中有一些微服务 运行。
我在启动 Karaf 时遇到此错误。
我认为这不会影响服务,应该很容易修复。
我的意思是服务似乎可以运行,所有配置的数据源也都处于良好状态(我对它们进行了一项一项测试)。
我们不使用 PAX,我们使用数据源的蓝图。
是什么导致了这个错误,我应该如何解决它?
2019-10-17T11:42:08,386 | INFO | FelixStartLevel | JtaPlatformInitiator | 177 - org.hibernate.orm.core - 5.4.2.Final | HHH000490: Using JtaPlatform implementation: [org.hibernate.osgi.OsgiJtaPlatform]
2019-10-17T11:42:08,413 | INFO | FelixStartLevel | PersistenceProviderTracker | 52 - org.apache.aries.jpa.container - 2.7.2 | Found provider for ybkDS org.hibernate.jpa.HibernatePersistenceProvider
2019-10-17T11:42:08,414 | ERROR | FelixStartLevel | Felix | 6 - org.ops4j.pax.logging.pax-logging-api - 1.11.2 | Bundle org.apache.aries.jpa.container [52] EventDispatcher: Error during dispatch. (java.lang.ClassCastException: org.apache.openjpa.persistence.PersistenceProviderImpl cannot be cast to javax.persistence.spi.PersistenceProvider)
java.lang.ClassCastException: org.apache.openjpa.persistence.PersistenceProviderImpl cannot be cast to javax.persistence.spi.PersistenceProvider
at org.apache.aries.jpa.container.impl.PersistenceProviderTracker.addingService(PersistenceProviderTracker.java:84) ~[?:?]
at org.apache.aries.jpa.container.impl.PersistenceProviderTracker.addingService(PersistenceProviderTracker.java:44) ~[?:?]
at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:941) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:870) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:318) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261) ~[osgi.core-6.0.0.jar:?]
at org.apache.aries.jpa.container.impl.PersistenceBundleTracker.trackProvider(PersistenceBundleTracker.java:229) ~[?:?]
at org.apache.aries.jpa.container.impl.PersistenceBundleTracker.findPersistenceUnits(PersistenceBundleTracker.java:213) ~[?:?]
at org.apache.aries.jpa.container.impl.PersistenceBundleTracker.addingBundle(PersistenceBundleTracker.java:98) ~[?:?]
at org.apache.aries.jpa.container.impl.PersistenceBundleTracker.addingBundle(PersistenceBundleTracker.java:44) ~[?:?]
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:469) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:415) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) ~[osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444) ~[osgi.core-6.0.0.jar:?]
at org.apache.felix.framework.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:915) ~[org.apache.felix.framework-5.6.12.jar:?]
at org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:834) [org.apache.felix.framework-5.6.12.jar:?]
at org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:516) [org.apache.felix.framework-5.6.12.jar:?]
at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4579) [org.apache.felix.framework-5.6.12.jar:?]
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2231) [org.apache.felix.framework-5.6.12.jar:?]
at org.apache.felix.framework.Felix.startBundle(Felix.java:2146) [org.apache.felix.framework-5.6.12.jar:?]
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1373) [org.apache.felix.framework-5.6.12.jar:?]
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308) [org.apache.felix.framework-5.6.12.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_192]
我通过来自 Karaf 的 removing/uninstalling OpenJPA
解决了这个问题。
似乎我在 Karaf 中安装了其他功能,这些功能已经涵盖了 JPA。
这些功能是:hibernate、jpa,还有 Apache Aries JPA blueprint 2.5.0.
我很确定其中之一涵盖了 JPA。因此,在这些之上使用 OpenJPA 是导致问题的原因。
注意: 我认为 jbonofre
的回答是正确的。不知道他们为什么让他删除这个答案。
"Don't you have two JPA engines deployed ? Like you use OpenJPA in your bundle/persistence.xml but you have Hibernate also installed ?"
我在看到它之前解决了我的问题,但似乎这正是问题所在,我已经有超过 1 个 JPA 提供程序。所以删除 OpenJPA 解决了这个问题。