gpt4 book ai didi

persistence - websphere 7 和(基于应用程序的)open-jpa 2

转载 作者:行者123 更新时间:2023-12-04 20:20:24 25 4
gpt4 key购买 nike

我不想使用内置的 Websphere 7 jpa 插件,而是使用应用程序 WEB-INF/lib/open-jpa 2 和专有的持久性提供程序。我无法为 Websphere 安装 OSGI 和 JPA 2 功能包。

最初,我只是在尝试加载persistence.xml(不支持版本=“2”)时遇到了sax 解析错误。该错误是由 open-jpa 1.2.3 中的一个类引发的。当我运行 websphere/appserver/bin/wsjpaversion.bat 时,会显示 open-jpa 1.2.3 jar。默认情况下,它会覆盖应用程序中的 open-jpa 2 jar。我创建了一个包含 open-jpa 2 jar 的共享库,并选中了此配置选项:“为此共享库使用隔离的类加载器”。我将我的应用程序类加载器设置为最后加载父级并为其分配新的共享库资源。 “版本 2”错误消失了,但还有另一个问题。当我尝试初始化 EntityManager 时,出现错误:

Caused by: javax.persistence.PersistenceException: Failed to load provider from META-INF/services
at javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:121)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:91)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
... 2 more
Caused by: java.lang.ClassCastException: com.ibm.websphere.persistence.PersistenceProviderImpl incompatible with javax.persistence.spi.PersistenceProvider
at javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:110)
... 11 more

还有一个细节:在persistence.xml 中,provider 元素被设置为专有的PersistenceProviderImpl,而不是默认的Websphere 持久性提供者。那么这个 websphere 默认值从何而来,我该如何防止呢? (另一个重要说明: 当我完全删除 persistence.xml 时,我得到相同的错误 )

谢谢

最佳答案

如果不安装功能包,您就是在打一场失败的战斗。虽然可以插入您自己的 JPA 实现 ,使用 JPA 无法做到这一点 API — 所以 WAS 7 将您与 JPA 的 1.0 版本联系起来(例如,请参见 here 这是如何完成的 — 没有类加载器策略会改变这一点,尽管起初看起来很诱人)。

关于persistence - websphere 7 和(基于应用程序的)open-jpa 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7183654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com