好吧,这可能应该是世界上最简单的东西,但我一直在尝试整整一天,但它仍然不工作..任何帮助非常感谢!如何在支持Hibernate的tomcat中运行Spring 3.0 PetClinic JPA
编辑:有关正确的程序,请参阅帕斯卡的回答。
我错了(因为我没有禁用LoadTimeWeaving)过程是留给参考..:
我做了什么:
- 下载的Tomcat 6.0.26 &春3.0.1
- 下载PetClinic从https://src.springframework.org/svn/spring-samples/petclinic
- 内置&部署petclinic.war。使用默认的JDBC持久性运行良好。
- 编辑的webapps/WEB-INF/spring/applicationContext-jpa.xml并将
jpaVendorAdaptor
设置为Hibernate。 - 编辑的webapps/WEB-INF/web.xml和改变
context-param
从的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)'方法。使用Spring的代理指定一个定制的LoadTimeWeaver或启动Java虚拟机:-javaagent:spring-agent.jar
webapps/META-INF/context.xml中的未注释行
<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/>
。- 同样的错误。将该行添加到TOMCAT_HOME/context.xml中
部署时没有错误。然而,当我做一些事情就会发出一个错误,说从测试javax.transaction的的
java.lang.NoClassDefFoundError: javax/transaction/SystemException at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:39)
11.Changed范围为默认(刚刚删除测试),由scaffman的建议。
12.Run罚款!谢谢!
我猜问题是在(3)。构建的WAR是否包含来自其''lib'目录中'javax.transaction'的任何内容? – skaffman 2010-03-29 07:22:03
你没有在3使用TopLink,你使用了JDBC – 2010-03-29 07:26:13
@Pascal:你是对的,我修复了这个帖子.. – 2010-03-29 07:31:06