2010-05-26 34 views
1

我剛開始學習Spring框架。我目前的目標是通過Geronimo服務器上的JPA(TopLink **提供程序)從我的bean訪問數據庫。但我無法克服獲得entityManagerFactory的問題。無法檢索「的entityManagerFactory」使用Geronimo的

的例外,我得到:

java.lang.IllegalStateException: 的ClassLoader [org.apache.geronimo.kernel.config.MultiParentClassLoader] 不提供 'addTransformer(ClassFileTransformer)' 方法。指定定製 的LoadTimeWeaver或使用Spring的代理啓動Java 虛擬機: -javaagent:彈簧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中所述,替代context.xml對於Geronimo是geronimo-tomcat.xml,但它的語法不提供任何更改類加載器的可能性。我仍然需要幫助!


回答

1

Toplink需要加載時織入支持。 我想在Geronimo中可以通過使用 META-INF/context.xml並把儀表罐子到 lib文件夾中,在Tomcat中進行配置,請參閱 here

編輯:所以,你的問題是,Toplink需要類轉換的支持。當TopLink的實體管理器在Spring的配置(LocalContainerEntityManagerFactoryBean)配置,它嘗試使用Spring的一類變換(<context:load-time-weaver />)的支持,但Spring並沒有內置在Geronimo的類轉換支持。所以,你有3種選擇:

  1. 使用JPA實現,它不需要類變換而不是Toplink的(例如,休眠)
  2. 不要配置Spring配置文件TopLink的實體管理器。使用Geronimo配置進行配置(我不知道如何)並使用JNDI獲取它。
  3. 對於狂人:實現爲Geronimo定製LoadTimeWeaver(我猜,它將使用TransformerAgent.addTransformer())。
+0

嗨,這似乎是正確的做法,但我沒能找到任何context.xml的替代。我更新了我的問題。 – Denis 2010-05-28 11:12:59

+0

@Denis:編輯回答。 – axtavt 2010-05-28 14:17:55

+0

你好!由於使用Hibernate,我有一個問題。我在哪裏可以找到「org.hibernate.ejb.HibernatePersistence」類?我決定使用maven並將下面的工件作爲依賴項「org.hibernate:hibernate-entitymanager」。 Maven爲我的項目添加了三個與hibernate相關的jar。其中兩個使用註釋連接,第三個是核心,但它們都不包含所需的類「org.hibernate.ejb.HibernatePersistence」。我遵循的指示:http://docs.jboss.org/hibernate/stable/entitymanager/reference/en/html/configuration.html – Denis 2010-05-30 11:58:44

相關問題