Java Spring和apachetomcatjar之间是否存在依赖关系
下面是我如何在我的应用程序中出错的时间线Java Spring和apachetomcatjar之间是否存在依赖关系,java,Java,下面是我如何在我的应用程序中出错的时间线 使用了Spring 2.5.3和tomcat 7.0.27-无错误 使用相同的tomcat(7.0.27)升级到Spring 3.1.1-无错误 将tomcat升级到7.0.42,与Spring 3.1.1一起使用-VerifyError 当我停止我的应用程序时,当我升级到tomcat 7.0.42时,我得到1000个verifyerrors(每个destroyBean都有一个单独的错误) 以下是堆栈跟踪: java.lang.VerifyError:(
java.lang.VerifyError:(类:org/springframework/orm/jpa/EntityManagerFactoryUtils,方法:ConvertJPAAccessExceptionIfAbsignature:(Ljava/lang/RuntimeException;)Lorg/springframework/dao/DataAccessException;)函数中的返回类型错误
位于org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.PostProcessBeforeDestroyment(PersistenceAnnotationBeanPostProcessor.java:357)
位于org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:193)
位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:498)
位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:474)
位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:509)
位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:474)
位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.DestroySingleton(DefaultSingletonBeanRegistry.java:442)
位于org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1066)
位于org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1040)
位于org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:988)
位于org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:556)
位于org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:142)
位于org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4980)
位于org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5626)
位于org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
位于org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1575)
位于org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1564)
位于java.util.concurrent.FutureTask$Sync.innerRun(未知源)
位于java.util.concurrent.FutureTask.run(未知源)
位于java.util.concurrent.ThreadPoolExecutor$Worker.runTask(未知源)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)
在java.lang.Thread.run(未知源代码)
可能原因:
修复了EntityManagerFactoryUtils的“convertJpaAccessException”始终返回而不是抛出DataAccessException的问题
该行在Spring 2.5.6的变更日志中
但是我的应用程序在Spring 3.1.1和tomcat 7.0.27上运行良好,但是在升级到tomcat 7.0.42时抛出了这个错误。好了,tomcat不依赖于Spring,Spring也不依赖于tomcat。这两个版本都没有 我怀疑在“使用相同的tomcat(7.0.27)升级到Spring 3.1.1”之后的应用程序中间版本中,您可能没有触发要运行的代码。请注意,它发生在关闭webapp时运行的代码中。如果您从未尝试在应用程序的中间版本中完全关闭,则不会对该bean调用
postprocesseBeanBeanBeforeDestruction
方法,也不会出现问题
我的猜测是,真正的问题是由混合版本的SpringJAR文件引起的