2010-03-29 92 views
9

好吧,這可能應該是世界上最簡單的東西,但我一直在嘗試整整一天,但它仍然不工作..任何幫助非常感謝!如何在支持Hibernate的tomcat中運行Spring 3.0 PetClinic JPA

編輯:有關正確的程序,請參閱帕斯卡的回答。

我錯了(因爲我沒有禁用LoadTimeWeaving)過程是留給參考..:

我做了什麼:

  1. 下載的Tomcat 6.0.26 &春3.0.1
  2. 下載PetClinic從https://src.springframework.org/svn/spring-samples/petclinic
  3. 內置&部署petclinic.war。使用默認的JDBC持久性運行良好。
  4. 編輯的webapps/WEB-INF/spring/applicationContext-jpa.xml並將jpaVendorAdaptor設置爲Hibernate。
  5. 編輯的webapps/WEB-INF/web.xml和改變context-param從的applicationContext-jdbc.xml中的ApplicationContext-jpa.xml
  6. 在Spring 3.0.1分佈TOMCAT_HOME/lib目錄複製
  7. 一切。
  8. 推出tomcat。看到

    引起:java.lang.IllegalStateException:ClassLoader [org.apache.catalina.loader.WebappClassLoader]不提供'addTransformer(ClassFileTransformer)'方法。使用Spring的代理指定一個定製的LoadTimeWeaver或啓動Java虛擬機:-javaagent:spring-agent.jar

  9. webapps/META-INF/context.xml中的未註釋行<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/>

  10. 同樣的錯誤。將該行添加到TOMCAT_HOME/context.xml中
  11. 部署時沒有錯誤。然而,當我做一些事情就會發出一個錯誤,說從測試javax.transaction的的

    java.lang.NoClassDefFoundError: javax/transaction/SystemException at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:39)

    11.Changed範圍爲默認(剛剛刪除測試),由scaffman的建議。

    12.Run罰款!謝謝!

+0

我猜問題是在(3)。構建的WAR是否包含來自其''lib'目錄中'javax.transaction'的任何內容? – skaffman 2010-03-29 07:22:03

+0

你沒有在3使用TopLink,你使用了JDBC – 2010-03-29 07:26:13

+0

@Pascal:你是對的,我修復了這個帖子.. – 2010-03-29 07:31:06

回答

9

好吧,這裏是什麼ID編號:

  1. 獲取Tomcat 6.0。26
  2. 結帳的PetClinic示例:

    svn co https://src.springframework.org/svn/spring-samples/petclinic/trunk/ petclinic 
    
  3. cd到的PetClinic目錄

  4. 修改src/main/webapp/WEB-INF/spring/applicationContext-jpa.xml使用Hibernate:
  5. 修改src/main/webapp/WEB-INF/web.xml使用applicationContext-jpa.xml
  6. 修改pom.xml捆綁jta.jar在戰爭中(如由@skaffman指出):

    <dependency> 
        <groupId>javax.transaction</groupId> 
        <artifactId>com.springsource.javax.transaction</artifactId> 
        <version>1.1.0</version> 
        <!--scope>test</scope--> 
    </dependency> 
    
  7. 構建WAR

    mvn install 
    
  8. 將其部署到Tomcat

    cp target/petclinic.war $TOMCAT_HOME/webapps 
    
  9. 瀏覽

    http://localhost:8080/petclinic 
    
+0

謝謝!我想知道爲什麼手冊說「LTW對於Hibernate來說不是必需的」。這幫助我很多! – 2010-03-29 08:35:05