繁体   English   中英

Spring和Apache Tomcat Jar之间是否有任何依赖关系

[英]Is there any dependency between Spring and Apache Tomcat Jar

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

  1. 使用Spring 2.5.3和tomcat 7.0.27-无错误
  2. 使用相同的tomcat(7.0.27)升级到Spring 3.1.1-没有错误
  3. 将tomcat升级到7.0.42,与Spring 3.1.1一起使用-VerifyError

当我停止应用程序时,当我升级到tomcat 7.0.42时,我会收到1000个verifyerrors(每个destroyBean都存在单独的错误)。

以下是堆栈跟踪:

java.lang.VerifyError: (class: org/springframework/orm/jpa/EntityManagerFactoryUtils, method: convertJpaAccessExceptionIfPossible signature: (Ljava/lang/RuntimeException;)Lorg/springframework/dao/DataAccessException;) Wrong return type in function at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessBeforeDestruction(PersistenceAnnotationBeanPostProcessor.java:357) at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:193) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:498) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:474) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:509) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:474) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:442) at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1066) at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1040) at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:988) at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:556) at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:142) at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4980) at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5626) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1575) at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1564) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

可能的原因: 修复了EntityManagerFactoryUtils的“ convertJpaAccessException”总是返回而不是抛出DataAccessExceptions的问题。此行在Spring 2.5.6的ChangeLog中

但是我的应用程序可以在Spring 3.1.1和tomcat 7.0.27上正常工作,但是在升级到tomcat 7.0.42时抛出此错误

AFAIK,Tomcat不依赖于Spring,Spring不依赖于Tomcat。 两者都不在任何版本中。

我怀疑在“使用相同的tomcat(7.0.27)升级到Spring 3.1.1之后”的应用程序的中间版本中,您要么没有触发该代码运行。 请注意,这是在关闭Web应用程序时运行的代码中发生的。 如果您从未尝试过在应用程序的中间版本中进行干净关闭,则不会在该Bean上调用该postProcessBeanBeforeDestruction方法,也不会出现问题。

我的猜测是真正的问题是由Spring JAR文件的混合版本引起的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM