如何在Tomcat中使用Hibernate支持的JPA运行Spring 3.0 PetClinic

时间:2010-03-29 07:12:13

标签: java hibernate spring jpa tomcat6

好吧,这可能应该是世界上最容易的东西,但我一整天都在努力,但它仍然无法工作..任何帮助都非常感谢!

编辑:有关正确的程序,请参阅Pascal的答案。

我的错(因为我没有禁用LoadTimeWeaving)程序留待参考..:

我做了什么:

  1. 已下载Tomcat 6.0.26& Spring 3.0.1
  2. https://src.springframework.org/svn/spring-samples/petclinic
  3. 下载了PetClinic
  4. 内置&部署了petclinic.war。可以使用默认的JDBC持久性。
  5. 编辑了webapps / WEB-INF / spring / applicationContext-jpa.xml并将jpaVendorAdaptor设置为Hibernate。
  6. 编辑了webapps / WEB-INF / web.xml,并将context-param从applicationContext-jdbc.xml更改为applicationContext-jpa.xml
  7. 将Spring 3.0.1发行版中的所有内容复制到TOMCAT_HOME / lib。
  8. 推出tomcat。看到了

    引起:java.lang.IllegalStateException:ClassLoader [org.apache.catalina.loader.WebappClassLoader]不提供'addTransformer(ClassFileTransformer)'方法。指定自定义LoadTimeWeaver或使用Spring的代理启动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. 部署没有错误。但是,当我做某事时会发出错误说

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

    11.根据scaffman的建议,将javax.transaction的范围从测试更改为默认(刚刚删除的测试)。

    12.Runs罚款!!谢谢!

2 个答案:

答案 0 :(得分:9)

好的,这就是我的所作所为:

  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. 建立战争

    mvn install
    
  8. 将其部署到Tomcat

    cp target/petclinic.war $TOMCAT_HOME/webapps
    
  9. 浏览

    http://localhost:8080/petclinic
    

答案 1 :(得分:1)

看起来像PetClinic包装有问题:

http://forum.springsource.org/showthread.php?t=85042

http://jira.springframework.org/browse/SPR-6880

pom.xml

有针对性的问题