之前使用tomcat7时遇到启动报错问题,日志如下:
严重: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/mypro]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1114)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1673)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/mypro]. Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2109)
at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1981)
at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1947)
at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1932)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1326)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5179)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 11 more
Caused by: java.lang.StackOverflowError
at java.util.HashMap.get(HashMap.java:300)
at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2257)
at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2269)
at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2269)
at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2269)
at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2269)
at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2269)
……
在网上找了很久,最终解决问题,在这时MARK一下。以下是解决方法:
--------------------------------------------------以下文章为转载--------------------------------------------------
使用tomcat 7.0.3x版本的同学可以发现tomcat启动慢了不少,而且还可能遇到如下启动时异常:
Unable to complete the scan for annotations for web application [] due to a StackOverflowError. Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies.
tomcat7.0.3X版本支持servlet3.0的特性,比如说支持@WebServlet、@WebListener,要支持这些特性,tomcat就得去扫描所有的jar包里面的每个类。这个异常表明在扫描jar包的时候,递归调用太深,导致栈溢出了,tomcat给了一个馊主意,让你增大xss,这个还是不好,xss加大了,可用线程数就少了。
分析tomcat源代码,发现它扫描的流程如下:
1.扫描所有jar包
2.通过查找jar包中META-INF/services/javax.servlet.ServletContainerInitializer文件内的定义,初始化ServletContainerInitializer实现
3.如果web.xml中配置了metadata-complete="true" 或者没有找到ServletContainerInitializer实现,都不会继续扫描jar包
网上大多数的答案的都是说在web.xml中加入了metadata-complete="true"就能避免这个异常。确实在很多场景下,这个异常是能够避免。但是使用spring-web-3.1.0.RELEASE的同学就杯具了,这个jar包中定义了一个ServletContainerInitializer,还是导致了扫描jar包。
我们可以用另外的办法来解决这个问题,我们让tomcat不扫描指定的jar包,tomcat就要轻松得多了,org.apache.tomcat.util.scan.StandardJarScanner中定义了defaultJarsToSkip,有了这个东东,我们就可以跳过某些jar包。
如果你不想使用servlet3.0 annotation支持,在tomcat的catalina.properties配置文件中tomcat.util.scan.DefaultJarScanner.jarsToSkip的值后面加一个",*",这样就不会扫描所有的jar包了。启动更快,也不会出异常。
tomcat在处理扫描是还有个小bug,比如我遇到了
SEVERE: Unable to process Jar entry [__MACOSX/cn/****/._HandlerFactory.class] from...
这是tomcat在扫描到以.class为后缀的文件后,就分析类,很明显,此文件都不是java类文件。tomcat不应该只判断后缀为.class就是java类文件。
原文地址:http://qingyuexiao.iteye.com/blog/1886059
- 浏览: 26631 次
- 性别:
- 来自: 上海
最新评论
发表评论
-
MD5加密解密
2015-05-14 18:08 689/*** * MD5加码 生成32位md5码 */ ... -
java合并图片学习
2014-06-30 11:00 616合并图片 -
dtreeDemo
2014-04-11 13:55 517dtreeDemo assign auth -
jQuery跨域问题
2014-03-28 13:28 334jQuery跨域问题简单实例,个人收藏,仅供参考。 -
上传插件问题IE不解析后台返回JSON
2014-03-21 09:31 1174后台: response.setContentTyp ... -
SimpleUpload
2014-03-20 14:00 447SimpleUpload -
hibernateValidateDemo
2014-01-06 16:23 523hibernateValidateDemo,springmvc ... -
ludo-jquery-treetable
2013-12-25 15:50 569ludo-jquery-treetable,ludo-jque ... -
TheSansMonoCondensed_Plain
2013-12-20 16:40 610IntelliJ IDEA 字体 --------- Th ... -
informationTips
2013-12-17 16:50 388informationTips,informationTips ... -
pubuliu
2013-10-09 12:30 539pubuliu demo -
elegantstruts
2013-08-13 14:22 553elegantstruts,elegantstruts,e ... -
java导出word
2013-07-31 16:23 545网上找的,java导出word例子,仅供参考。 -
Evernote
2013-07-27 17:57 551Evernote1-134 -
IntelliJ+Maven+Jetty+Jrebel
2013-04-28 17:07 587IntelliJ+Maven+Jetty+Jrebel实现 ... -
centos+jmsm
2013-04-25 19:20 669centos6+java+maven+svn+mysql,只是 ... -
eclipse、myeclipse常用插件(aptana缺少部分)
2012-08-13 17:04 763http://update1.aptana.org/studi ... -
eclipse、myeclipse常用插件(svn缺少部分--2)
2012-08-13 16:55 633eclipse、myeclipse常用插件(svn缺少部分-- ... -
eclipse、myeclipse常用插件(svn缺少部分--1)
2012-08-13 16:52 676eclipse、myeclipse常用插件(svn缺少部分-- ... -
eclipse、myeclipse常用插件
2012-08-13 16:48 1218eclipse、myeclipse插件 包括:apt ...
相关推荐
免安装版的tomcat7.0.3版本,有service.bat和startup.bat,亲测可用。
适用于tomcat7.0.3的APR库,Tomcat7.0免安装版是不带有APR库的,只要将tcnative-1.dll放入tomcat7.0\bin下就可以发布并运行程序了,我还附上了tomcat7.0.3
Nessus-7.0.3-x64Nessus-7.0.3-x64Nessus-7.0.3-x64Nessus-7.0.3-x64
SecureCRT 7.03官方64位版 发布于2013年1月17日。 注册方法自6.7.5版本后是一样的。 Standard 64-bit (x64) Windows PC Installer SecureCRT 7.0.3 (non-integrated) scrt703-x64.exe
SecureCRT and SecureFX v7.0.3 x86 x64完全注册正式破解版
文件列表:SecureCrt7.0.3_x64、SecureCrt7.0.3_x86、keygen、readme.txt 1. Main Program Installation install the binary program "scrt703-x64.exe" 2. Hack it kick the binary program "keygen.exe" Patch it ...
SecureCRT and SecureFX 7.0.3 (integrated) * scrt_sfx703-x64.exe * The integrated installer is required for settings to be shared between SecureCRT and SecureFX. The non-integrated installer does not ...
ESXi7.0.3安装教程
ImageMagick-7.0.3-6-Q16-x64-static
PLSQL Developer 7.0.3 Setup.exe PLSQL Developer 7.0.3 Setup.exe PLSQL Developer 7.0.3 Setup.exe
ios7.0.3shshios7.0.3的shsh文件 刷机用
Release Notes for PowerBuilder[R] Version 7.0.3 (c) 1991-2000 Sybase, Inc. and its subsidiaries. All rights reserved. Updated 12/06/00 _________________________________________________________________...
powerShell安装包,安装完之后,让我们在操作命令行的时候更加的方便和快捷,使用起来很方便的,该版本是windows系统的版本,需要下载的朋友可以下载使用哦!
本cudnn为7.0.3版本,与7.0.4版本通用,目前官网上已经下载不到了。已转换为zip格式,直接解压即可。
Redis 7.0.3 for Windows 升级紧迫性:紧急,特别是如果您使用的是以前版
Redis-x64-7.0.3-win
itext7-7.0.3.zip
php-7.0.3.tar.bz2源码包下载
oracle数据库图形管理工具,精简版 PLSQL Developer 7.0.3
安卓的小伙伴不用嫉妒苹果了,安卓版微信7.0.3送给大家,请惠存。