2010-03-29 62 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

相关问题