好吧,這可能應該是世界上最簡單的東西,但我一直在嘗試整整一天,但它仍然不工作..任何幫助非常感謝!如何在支持Hibernate的tomcat中運行Spring 3.0 PetClinic JPA
編輯:有關正確的程序,請參閱帕斯卡的回答。
我錯了(因爲我沒有禁用LoadTimeWeaving)過程是留給參考..:
我做了什麼:
- 下載的Tomcat 6.0.26 &春3.0.1
- 下載PetClinic從https://src.springframework.org/svn/spring-samples/petclinic
- 內置&部署petclinic.war。使用默認的JDBC持久性運行良好。
- 編輯的webapps/WEB-INF/spring/applicationContext-jpa.xml並將
jpaVendorAdaptor
設置爲Hibernate。 - 編輯的webapps/WEB-INF/web.xml和改變
context-param
從的applicationContext-jdbc.xml中的ApplicationContext-jpa.xml 在Spring 3.0.1分佈TOMCAT_HOME/lib目錄複製
- 一切。
推出tomcat。看到
引起:java.lang.IllegalStateException:ClassLoader [org.apache.catalina.loader.WebappClassLoader]不提供'addTransformer(ClassFileTransformer)'方法。使用Spring的代理指定一個定製的LoadTimeWeaver或啓動Java虛擬機:-javaagent:spring-agent.jar
webapps/META-INF/context.xml中的未註釋行
<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/>
。- 同樣的錯誤。將該行添加到TOMCAT_HOME/context.xml中
部署時沒有錯誤。然而,當我做一些事情就會發出一個錯誤,說從測試javax.transaction的的
java.lang.NoClassDefFoundError: javax/transaction/SystemException at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:39)
11.Changed範圍爲默認(剛剛刪除測試),由scaffman的建議。
12.Run罰款!謝謝!
我猜問題是在(3)。構建的WAR是否包含來自其''lib'目錄中'javax.transaction'的任何內容? – skaffman 2010-03-29 07:22:03
你沒有在3使用TopLink,你使用了JDBC – 2010-03-29 07:26:13
@Pascal:你是對的,我修復了這個帖子.. – 2010-03-29 07:31:06