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:(

下面是我如何在我的应用程序中出错的时间线

  • 使用了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:(类: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文件引起的