代码之家  ›  专栏  ›  技术社区  ›  Enno Shioji

如何使用hibernate支持的jpa在tomcat中运行spring 3.0petclinic

  •  9
  • Enno Shioji  · 技术社区  · 15 年前

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

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

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

    我所做的:

    1. 已下载tomcat 6.0.26&spring 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 冬眠。
    5. 已编辑webapps/WEB-INF/web.xml并已更改 context-param 从applicationcontext-jdbc.xml到applicationcontext-jpa.xml
    6. 将spring 3.0.1发行版中的所有内容复制到tomcat_home/lib。
    7. 启动了Tomcat。锯

      原因:java.lang.IllegalStateException:classloader[org.apache.catalina.loader.webappclassloader]不提供“addTransformer(classFileTransformer)”方法。指定自定义LoadTimeWeaver或用Spring代理启动Java虚拟机:-javaAgent:Spring Agut.JAR

    8. 未注释行 <Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/> 在webapps/meta-inf/context.xml中。

    9. 同样的错误。将该行添加到tomcat_home/context.xml
    10. 部署无误。但是,当我做某事时,它会发出一个错误

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

      11.根据scaffman的建议,将javax.transaction的范围从test更改为default(刚刚删除了test)。

      12.运行良好!谢谢!

    2 回复  |  直到 12 年前
        1
  •  9
  •   Pascal Thivent    15 年前

    好吧,我是这么做的:

    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 要使用休眠:
    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
      
        2
  •  1
  •   skaffman    15 年前