Linux服务器上Tomcat三个变态异常信息及解决方案

公司的服务器是Linux系统,在架构服务时,tomcat总是报出很纠结的异常。让我走了不少弯路。注意力全留在检查JDK和公司的服务上了,因为我把服务卸掉,tomcat纯跑是没有问题的。所以就坚定的以为问题出在服务上,搞的晕头转向的。最后上网一查,是tomcat自身配置的问题。搞了好久的问题,上去按说明操作后,服务立马可以访问。花了不到十分钟。兴奋之余,分享给大家。嘻嘻。 

--------------------------------------------------------------------------------------------

一.TOMCAT启动时正常,关闭时报异常信息如下:

2011-8-16 9:34:22 org.apache.catalina.startup.Catalina stopServer
严重: Catalina.stop:
java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:520)
        at java.net.Socket.connect(Socket.java:470)
        at java.net.Socket.<init>(Socket.java:367)
        at java.net.Socket.<init>(Socket.java:180)
        at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:395)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:344)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:435)

解决方案:

serverSocket没有创建起来,所以服务器上的cilentSocket去连接的时候就会这样报错。

还有端口被占的情况,也可如此解决:

1.先查看端口信息:WINDOWS上运行命令:netstat -n;       Linux上运行shell:netstat -tunlp | grep 80;

2.发现有未停止的端口,则关掉,我一般都是80系列的全部关掉。以防止下次启动时再报错,然后重新启服务。

3.补充:Linux上关闭端口的命令:kill -9 14570;注:14570为端口之前的数字,每个端口对应一个数字。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

二.装载服务时,服务列表页面可以显示,RUNING状态显示TRUE,但是主页访问出错

。(注:服务即部署的WEB项目,我们公司封装的服务)

页面报错信息为:

HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling

this request.
exception
javax.servlet.ServletException: PermGen space
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:273)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

root cause
java.lang.OutOfMemoryError: PermGen space
        java.lang.ClassLoader.defineClass1(Native Method)
        java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        java.net.URLClassLoader.access$100(URLClassLoader.java:56)
        java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        java.security.AccessController.doPrivileged(Native Method)
        java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        java.lang.ClassLoader.defineClass1(Native Method)
        java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        java.net.URLClassLoader.access$100(URLClassLoader.java:56)
        java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        java.security.AccessController.doPrivileged(Native Method)
        java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        java.lang.ClassLoader.defineClass1(Native Method)
        java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        java.net.URLClassLoader.access$100(URLClassLoader.java:56)
        java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        java.security.AccessController.doPrivileged(Native Method)
        java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        java.lang.ClassLoader.loadClass(ClassLoader.java:251)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.27

logs.

解决方案:

需要通过改tomcat配置信息来增加存储空间。这是原文:It needs to increase the memory by making changes in catalina.sh file.怕翻译的不好误人子弟。

解决步骤如下:

1》:打开tomcat/bin目录下得catalina.sh文件

vi /usr/local/jakarta/tomcat/bin/catalina.sh

2》:在文件中增加图中黑体字一段:

 

加在如上图中位置。重启tomcat即可。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

三.异常信息如下:

严重: IOException while loading persisted sessions: java.io.EOFException
java.io.EOFException
 at java.io.ObjectInputStream$PeekInputStream.readFully

(ObjectInputStream.java:2228)
 at java.io.ObjectInputStream$BlockDataInputStream.readShort

(ObjectInputStream.java:2694)
 at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:761)
 at java.io.ObjectInputStream.<init>(ObjectInputStream.java:277)
 at org.apache.catalina.util.CustomObjectInputStream.<init>

(CustomObjectInputStream.java:58)
 at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:362)
 at org.apache.catalina.session.StandardManager.load(StandardManager.java:321)
 at org.apache.catalina.session.StandardManager.start(StandardManager.java:637)
 at org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:432)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4160)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
 at org.apache.catalina.core.StandardService.start(StandardService.java:448)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke

(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
2011-8-16 9:41:47 org.apache.catalina.session.StandardManager start
严重: Exception loading sessions from persistent storage
java.io.EOFException
 at java.io.ObjectInputStream$PeekInputStream.readFully

(ObjectInputStream.java:2228)
 at java.io.ObjectInputStream$BlockDataInputStream.readShort

(ObjectInputStream.java:2694)
 at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:761)
 at java.io.ObjectInputStream.<init>(ObjectInputStream.java:277)
 at org.apache.catalina.util.CustomObjectInputStream.<init>

(CustomObjectInputStream.java:58)
 at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:362)
 at org.apache.catalina.session.StandardManager.load(StandardManager.java:321)
 at org.apache.catalina.session.StandardManager.start(StandardManager.java:637)
 at org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:432)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4160)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
 at org.apache.catalina.core.StandardService.start(StandardService.java:448)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke

(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
2011-8-16 9:41:50 org.apache.catalina.loader.WebappClassLoader validateJarFile

解决方案:

这是由于保存在硬盘的session数据读取失败,问题不大,但是很让人纠结。不处理的话每次启动都会出现异常。

解决办法:定时清空tomcat/work目录下得文件,主要是 *.ser 文件,或者扇窗户session.ser。我的做法就是赶尽杀绝,保证目录下很“纯洁”。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值