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

发布于 2024-08-26 22:12:12 字数 1588 浏览 5 评论 0 原文

好吧,这可能应该是世界上最简单的事情,但我已经尝试了一整天,但仍然不起作用.. 非常感谢任何帮助!

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

我的错误(因为我没有禁用 LoadTimeWeaving)过程供参考。:

我做了什么:

  1. 下载了 Tomcat 6.0.26 和 Tomcat 6.0.26。 Spring 3.0.1
  2. https://src.springframework.org/svn/spring- 下载 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. 启动了 tomcat。锯

    原因:java.lang.IllegalStateException:ClassLoader [org.apache.catalina.loader.WebappClassLoader] 不提供“addTransformer(ClassFileTransformer)”方法。指定自定义的 LoadTimeWeaver 或使用 Spring 的代理启动 Java 虚拟机: -javaagent:spring-agent.jar

  8. Uncommented line 在 webapps/META-INF/context.xml 中。

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

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

    11.按照 scaffman 的建议,将 javax.transaction 的范围从 test 更改为默认值(刚刚删除了 test)。

    12.运行良好!!谢谢!

OK, this probably is supposed to be the easiest thing in the world, but I've been trying for the entire day, and it's still not working.. Any help is highly appreciated!

EDIT: For the correct procedure, please see Pascal's answer.

My wrong (since I did not disabled LoadTimeWeaving) procedure is left for reference..:

What I did:

  1. Downloaded Tomcat 6.0.26 & Spring 3.0.1
  2. Downloaded PetClinic from https://src.springframework.org/svn/spring-samples/petclinic
  3. Built & deployed petclinic.war. Ran fine with default JDBC persistence.
  4. Edited webapps/WEB-INF/spring/applicationContext-jpa.xml and set jpaVendorAdaptor to Hibernate.
  5. Edited webapps/WEB-INF/web.xml and changed context-param from applicationContext-jdbc.xml to applicationContext-jpa.xml
  6. Copied everything in the Spring 3.0.1 distribution to TOMCAT_HOME/lib.
  7. Launched tomcat. Saw

    Caused by: java.lang.IllegalStateException: ClassLoader [org.apache.catalina.loader.WebappClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:spring-agent.jar

  8. Uncommented line <Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/> in webapps/META-INF/context.xml.

  9. Same error. Added that line to TOMCAT_HOME/context.xml
  10. Deployed without error. However, when I do something it will issue an error saying

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

    11.Changed scope of javax.transaction from test to default (just deleted test), as suggested by scaffman.

    12.Runs fine!! Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

云朵有点甜 2024-09-02 22:12:12

好的,这就是我所做的:

  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所指出的):

    <依赖>;
      javax.transaction;
      com.springsource.javax.transaction;
      <版本>1.1.0
      
    
    
  7. 构建战争

    mvn 安装
    
  8. 将其部署到 Tomcat

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

    http://localhost:8080/petclinic
    

Ok, here is what I did:

  1. Get Tomcat 6.0.26
  2. Checkout the petclinic sample:

    svn co https://src.springframework.org/svn/spring-samples/petclinic/trunk/ petclinic
    
  3. cd into the petclinic directory

  4. Modify src/main/webapp/WEB-INF/spring/applicationContext-jpa.xml to use Hibernate:
  5. Modify the src/main/webapp/WEB-INF/web.xml to use the applicationContext-jpa.xml
  6. Modify the pom.xml to bundle jta.jar in the war (as pointed out by @skaffman):

    <dependency>
      <groupId>javax.transaction</groupId>
      <artifactId>com.springsource.javax.transaction</artifactId>
      <version>1.1.0</version>
      <!--scope>test</scope-->
    </dependency>
    
  7. Build the war

    mvn install
    
  8. Deploy it to Tomcat

    cp target/petclinic.war $TOMCAT_HOME/webapps
    
  9. Browse

    http://localhost:8080/petclinic
    
挽容 2024-09-02 22:12:12

看起来像 PetClinic 包装有问题:

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

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

其中有针对 pom.xml 的修复

Looks like a problem with PetClinic packaging:

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

and

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

There's fix in there for the pom.xml

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文