struts2重启tomcat后的错误的排除过程

目使用架构struts2,hibernate3,spring2,在jdk6,tomcat5.5.12的环境下运行,曾经试过tomcat6,程序运行大概不到24小时就会报内存溢出,没办法又迁回到tomcat5.5.12,结果在不重启tomcat的情况下一直运行良好,但是使用restart就不能正常重启,必须先shutdown后再Start就OK了.

错误1: Could not load org.apache.log4j.spi.ThrowableInformation. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.

查看log4j的包,其它的log4j包全部删除,替换为log4j-1.2.9.jar后这个错误消失,原来包里有多个版本的log4j包;
 

错误2: SEVERE: Exception starting filter Struts2

Caught exception while loading file struts-default.xml – [unknown location]

Caused by: java.lang.ClassCastException:

org.apache.xerces.parsers.XIncludeAwareParserConfiguration cannot be cast to org.apache.xerces.xni.parser.XMLParserConfiguration

解决方法1:
移除项目目录中的xerces
.jar
原因there was a conflict between tomcat’s internal XML parser and the xerces I was using inside my project.

这样可以重启了.
 

解决方法2:
将xerces
.jar 包放到tomcat/lib下面,作为公共jar使用,webapp里面的都删掉,这个是要和xml-api.jar一定移过去

问题3重启后,使用浏览器访问时正常,只有使用lucene查询时,报java.lang.OutOfMemoryError: Java heap space

Caused by: java.lang.OutOfMemoryError: Java heap space

at java.lang.AbstractStringBuilder.<init>(Unknown Source)

at java.lang.StringBuffer.<init>(Unknown Source)

at java.io.BufferedReader.readLine(Unknown Source)

at java.io.BufferedReader.readLine(Unknown Source)

at org.wltea.analyzer.dic.Dictionary.loadMainDict(Dictionary.java:95)

Java heap space 错误 , 应该是存在内存泄露了 , 根据异常提示信息 , 先不考虑 java 的库 , 只看第三方和自己的代码 ,
 org.wltea.analyzer.dic.Dictionary.loadMainDict(Dictionary.java:95)

这里就需要看这个方法到底干什么呢,原来我使用了IKAnalyzer3.2.0Stable 分词,换了其它的分词就没异常了,IK的分词作者给我的回复是这样的:

对于你说的问题,不知道算是IK的问题,还是算Tomcat的classloader的问题。这里我把问题的原因说明一下:
在IK中,由于词典需要占用较大的内存空间,约27M,因此词典采用了私有静态单例模型,确保只有一个实例在内存中。Tomcat在处理动态热部署的时候,对class的reload一直存在缺陷,造成先前的静态词典内存没有清除,才造成了OOM的错误。毕竟Tomcat不是一款商用的APP Server,而它在控制台上的功能相对薄弱,不建议使用它的热部署功能,如果需要,建议使用web sphere等专业的商用服务器平台.
非常感谢作者给我的回复,我目前的条件只能使用tomcat和 IKAnalyzer3分词,我觉得这个分词挺符合我的分词要求,正在寻找解决办法,有了在续写.
 
参考:
http://old.nabble.com/org.apache.xerces.parsers.XML11Configuration-cannot-be-cast-to-org.apache.xerces.xni.parser.XMLParserConfiguration-td14108368.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值