Java 如何使用支持Hibernate的JPA在tomcat中运行Spring3.0PetClinic

Java 如何使用支持Hibernate的JPA在tomcat中运行Spring3.0PetClinic,java,hibernate,spring,jpa,tomcat6,Java,Hibernate,Spring,Jpa,Tomcat6,好吧,这可能是世界上最简单的事情,但我已经试了一整天了,但还是不起作用。。非常感谢您的帮助 编辑:有关正确的步骤,请参阅Pascal的答案。 我的错误(因为我没有禁用LoadTimeWeaving)过程留作参考..: 我所做的: 下载的Tomcat 6.0.26和Spring 3.0.1 从下载PetClinic 构建和部署petclinic.war。使用默认JDBC持久性运行良好 编辑webapps/WEB-INF/spring/applicationContext-jpa.xml并将jpav

好吧,这可能是世界上最简单的事情,但我已经试了一整天了,但还是不起作用。。非常感谢您的帮助

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

我的错误(因为我没有禁用LoadTimeWeaving)过程留作参考..:

我所做的:

  • 下载的Tomcat 6.0.26和Spring 3.0.1
  • 从下载PetClinic
  • 构建和部署petclinic.war。使用默认JDBC持久性运行良好
  • 编辑webapps/WEB-INF/spring/applicationContext-jpa.xml并将
    jpavendoradapter
    设置为休眠
  • 编辑webapps/WEB-INF/WEB.xml,并将
    上下文参数
    从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)”方法。指定自定义LoadTimeWeaver或使用Spring的代理启动Java虚拟机:-javaagent:Spring-agent.jar

  • webapps/META-INF/context.xml中未注释的行

  • 同样的错误。将该行添加到TOMCAT_HOME/context.xml
  • 部署时没有错误。然而,当我做某事时,它会发出一个错误,说

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

    11.根据斯加夫曼的建议,将javax.transaction的范围从测试更改为默认(只是删除了测试)

    12.运行良好!!谢谢大家!


  • 看起来PetClinic的包装有问题:


    这里有一个pom.xml的补丁

    好的,下面是我所做的:

  • 获取Tomcat 6.0.26
  • 检查petclinic样本:

    svn co https://src.springframework.org/svn/spring-samples/petclinic/trunk/ petclinic
    
  • cd
    进入petclinic目录

  • 修改
    src/main/webapp/WEB-INF/spring/applicationContext jpa.xml
    以使用Hibernate:
    • 注释
      (,这是用于Toplink)
    • 将Hibernate声明为
      jpaVendorAdapter
      (注释Toplink部分,取消注释Hibernate部分)
  • 修改
    src/main/webapp/WEB-INF/WEB.xml
    以使用
    applicationContext jpa.xml
  • 在战争中修改
    pom.xml
    以绑定jta.jar(正如@skaffman所指出的):

  • 将其部署到Tomcat

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

    http://localhost:8080/petclinic
    

  • 我猜问题出在(3)。构建的WAR是否在其
    lib
    目录中包含来自
    javax.transaction
    的任何内容JDBC@Pascal:没错,我修复了帖子。@skaffman:我检查了pom.xml和javax.transaction是否在测试范围内。。我会试着把它包括进去。谢谢谢谢我想知道为什么手册上说“Hibernate不需要LTW”。这对我帮助很大!
    cp target/petclinic.war $TOMCAT_HOME/webapps
    
    http://localhost:8080/petclinic