http://doc.javanb.com/spring-framework-reference-zh-2-0-5/ch12s06.html#id512127
(1)Error creating bean with name 'loadTimeWeaver': Initialization of bean failed; nested exception is 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??
(2)Cannot parse persistence unit from class path resource [META-INF/persistence.xml]??
No single default persistence unit defined in {classpath*:META-INF/persistence.xml}
Cannot register non aspect: org.springframework.samples.petclinic.aspects.UsageLogAspect ,
少了很多包;关建就是jpa是ejb的应用,需要把ejb的类打成jar 包,放在web的项目lib下。ejb下也应该有包。
No mapping found for HTTP request with URI [/jpa2/welcome.do] in DispatcherServlet with name 'petclinic'
Jakarta Tomcat 默认的类装载器并不支持类的切换,但是它允许使用用户自定义的类装载器。 Spring提供了 TomcatInstrumentableClassLoader
类(位于 org.springframework.instrument.classloading.tomcat
包中), 这个类继承自Tomcat的类装载器(WebappClassLoader
)并且允许JPA ClassTransformer
的实例来“增强”所有由它加载的类。 简单来说,JPA转化器(JPA transformer)仅仅在特定的web应用中才能被使用。(使用 TomcatInstrumentableClassLoader
的那些应用)。
为了使用用户自定义的类装载器:
-
将
spring-tomcat-weaver.jar
复制到 $CATALINA_HOME/server/lib 下(其中$CATALINA_HOME 表示Tomcat的安装路径)。 -
通过修改web application context使Tomcat使用用户自定义的类装载器(而不是默认的类装载器):
<Context path="/myWebApp" docBase="/my/webApp/location" ...> <Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/> ... </Context>