gpt4 book ai didi

java - 无法使用 Geronimo 检索 "entityManagerFactory"

转载 作者:太空宇宙 更新时间:2023-11-04 08:53:07 24 4
gpt4 key购买 nike

我刚刚开始学习Spring框架。我当前的目标是通过 Geronimo 服务器上的 JPA(TopLink** 提供程序)从我的 bean 访问数据库。但我无法克服获取entityManagerFactory 的问题。

我得到的异常:

java.lang.IllegalStateException: ClassLoader [org.apache.geronimo.kernel.config.MultiParentClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:spring-agent.jar

我访问它的方式:

    <context:load-time-weaver />

<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceXmlLocation" value="classpath:/META-INF/persistence.xml" />
</bean>

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<bean name="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven />

如果有人可以在不使用“-javaagent:spring-agent.jar”选项的情况下帮助我,我将非常感激。

<小时/>

正在寻找解决方案。第一次尝试。

关注“axtavt”advice ,我找到了为 Tomcat 上的 Web 应用程序指定特殊类加载器的示例。它使用 context.xml 文件来实现此目的。尽管我的 Geronimo 使用 Tomcat,但我没有成功实现 context.xml。正如接下来所说 manual Geronimo 的 context.xml 的替代方案是 geronimo-tomcat.xml,但它的语法不提供任何更改类加载器的可能性。我仍然需要帮助!

<小时/>

最佳答案

Toplink 需要加载时编织支持。 我想在 Geronimo 中可以使用 META-INF/context.xml 来配置它并将仪器 jar 放入 lib文件夹,如 Tomcat 中,请参阅 here .

编辑:所以,您的问题是 Toplink 需要类转换支持。当在 Spring 的配置 ( LocalContainerEntityManagerFactoryBean ) 中配置 Toplink 的实体管理器时,它会尝试使用 Spring 对类转换的支持 ( <context:load-time-weaver /> ),但 Spring 在 Geronimo 中没有对类转换的内置支持。所以,你有 3 个选择:

  1. 使用不需要类转换的 JPA 实现来代替 Toplink(例如 Hibernate)
  2. 不要在 Spring 配置文件中配置 Toplink 的实体管理器。使用 Geronimo 配置来配置它(我不知道如何)并使用 JNDI 获取它。
  3. 对于狂热者:实现自定义 LoadTimeWeaver对于 Geronimo(我猜,它将使用 TransformerAgent.addTransformer() )。

关于java - 无法使用 Geronimo 检索 "entityManagerFactory",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2914904/

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