今天myeclipse 下的tomcat又起不来了。。。

其实这是看人品的。。

这两天问题不断,我也搞得满脑子浆糊。。

我决定静下来一个bug一个bug的解决,不能乱了阵脚。。

从最无厘头的问题说起,打开myeclipse,启动tomcat后一直停在:

INFO: Initializing Spring root WebApplicationContext
AbandonedObjectPool is used (org.apache.commons.dbcp.AbandonedObjectPool@71e5987)
   LogAbandoned: false
   RemoveAbandoned: true
   RemoveAbandonedTimeout: 180

上面还有信息显示:

INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Program Files\Java\jdk1.7.0_10\bin;D:\Program Files\Apache Software Foundation\Tomcat 7.0\bin

本以为是这个出错,网上有人说下载一个tomcat的tcnative-1.dll放到C:\Windows\System32目录下,试了没用。不过也有人说这个错误不算错,只是tomcat提示 一下没有加载到tomcat自己的库,不碍事。事实证明就是不碍事。

回归正题,话说tomcat起不来,我可是尝尽各种方法。重启tomcat,重启myeclipse,重启pc,换tomcat端口,曾经成功过一次,被我一得瑟关掉重来一遍的,结果再没起来过。。

后来又在老大提醒下,查看数据库oracle连接数,完全没满,重启oracle服务器,还是没用。

最后出绝招,把tomcat卸掉重装了。成功启动!

INFO: Server startup in 327 ms

后来又出过几次起不来的情况,果然是部署的项目的数据库因为网络环境连不上了。可以先本地试着连着看,如果真连不上,那tomcat基本起不来了。

 

网上有人说解决方案是:(还没试过,先记下来)

dataSource的配置 removeAbandoned = true去掉即可。

http://hi.baidu.com/javashow/item/be24eb77c574382d5c1789df

以下为摘录:

在配置时,主要难以理解的主要有:removeAbandoned java.lang.InstantiationExceptionlogAbandonedremoveAbandonedTimeoutmaxWait这四个参数,设置了rmoveAbandoned=true 那么在getNumActive()快要到getMaxActive()的时候,系统会进行无效的Connection的回收,回收的 ConnectionremoveAbandonedTimeout(默认300)中设置的秒数后没有使用的Connection,激活回收机制好像是getNumActive()=getMaxActive()-2。 有点忘了。
logAbandoned=true的话,ArrayIndexOutOfBoundsException将会在回收事件后,在log中打印出回收Connection的错误信息,包括在哪个地方用了Connection却忘记关闭了,在调试的时候很有用。
在这里私人建议maxWait的时间不要设得太长,maxWait如果设置太长那么客户端会等待很久才激发回收事件。

以下是我的配置的properties文件:

#连接设置

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:DBSERVER
jdbc.username=user
jdbc.password=pass
#<!-- 初始化连接 -->
dataSource.initialSize=10
#<!-- 最大空闲连接 -->
dataSource.maxIdle=20
#<!-- 最小空闲连接 -->
dataSource.minIdle=5
#最大连接数量
dataSource.maxActive=50
#是否在自动回收超时连接的时候打印连接的超时错误
dataSource.logAbandoned=true
#是否自动回收超时连接
dataSource.removeAbandoned=true
#超时时间(以秒数为单位)
dataSource.removeAbandonedTimeout=180
#<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
dataSource.maxWait=1000

 

 

 

posted @ 2013-03-30 09:44  peterpanzsy  阅读(811)  评论(0编辑  收藏  举报