TOMCAT关闭时候,数据库连接未释放

时间:2021-09-08 23:42:41
操作系统:redhat as 4 (64位)
JDK1.5.0_17 64位
TOMCAT5.5.27
POOLMAN 1.0


POOLMAN里面设置:初始连接数 400,最小连接数 100 

1.
用 startup.sh启动TOMCAT的时候,查看ORACLE session数为 412,没有对应用操作,直接 shutdown.sh 查看ORACLE session 为 12.
用TOP查看没有JDK进程---正常

2. 用 startup.sh启动TOMCAT的时候,查看ORACLE session数为 412,
然后登陆一下应用,后 shutdown.sh关闭TOMCAT 查看ORACLE session 为 412.----这个时候ORACLE 的SESSION未释放。
用TOP查看的时候发现还是有JDK进程。

这个应用程序在WINDOW下的时候没有出现这个问题


各位帮个忙,看一下,哪里出问题了。
 

4 个解决方案

#1


难道是jdk在两个系统中的关闭机制不一样? 不清楚, 帮顶吧,

#2


是不是退出的时候出了异常了以至于tomcat没有被关闭,可以检查一下catalina.out日志文件。

另外可以用kill -9 [pid] 杀掉tomcat的进程看看ORACLE session是否被释放掉了。

#3


  tomcat5.5 中的startup.sh 启动方式的一个bug ,经过研究,采用自带的jsvc.tar.gz安装包 重新更改启动模式。 
启动文件如下:
#!/bin/sh 

# Startup Script for Tomcat5 

# chkconfig: 345 88 14 
# description: Tomcat Daemon 
# processname: jsvc 
# pidfile: /var/run/jsvc.pid 
# config: 

# Source function library. 
. /etc/rc.d/init.d/functions 

prog=tomcat 

JAVA_HOME=/usr/java/jdk1.5.0_17
CATALINA_HOME=/opt/telecom 
DAEMON_HOME=/opt/telecom/bin 
#TOMCAT_USER=oracle 
TOMCAT_USER=oracle 

# for multi instances adapt those lines. 
TMP_DIR=/var/tmp 
PID_FILE=/var/run/jsvc.pid 
CATALINA_BASE=/opt/telecom 

CATALINA_OPTS= 
CLASSPATH=$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/bin/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar 

case "$1" in 
  start) 
    # 
    # Start Tomcat 
    # 
    $DAEMON_HOME/jsvc-src/jsvc -user $TOMCAT_USER -home $JAVA_HOME -Dcatalina.home=$CATALINA_HOME -Dcatalina.base=$CATALINA_BASE -Djava.io.tmpdir=$TMP_DIR -wait 10 -pidfile $PID_FILE -outfile $CATALINA_HOME/logs/catalina.out -errfile '&1' $CATALINA_OPTS -cp $CLASSPATH org.apache.catalina.startup.Bootstrap 

    # 
    # To get a verbose JVM 
    #-verbose \ 
    # To get a debug of jsvc. 
    #-debug \ 
    exit $? 
    ;; 

  stop) 
    # 
    # Stop Tomcat 
    # 
    $DAEMON_HOME/jsvc-src/jsvc -stop -pidfile $PID_FILE org.apache.catalina.startup.Bootstrap 
    exit $? 
    ;; 

  *) 
    echo "Usage tomcat.sh start/stop" 
    exit 1;; 
esac 

#4


该回复于2015-05-26 09:55:46被管理员删除

#1


难道是jdk在两个系统中的关闭机制不一样? 不清楚, 帮顶吧,

#2


是不是退出的时候出了异常了以至于tomcat没有被关闭,可以检查一下catalina.out日志文件。

另外可以用kill -9 [pid] 杀掉tomcat的进程看看ORACLE session是否被释放掉了。

#3


  tomcat5.5 中的startup.sh 启动方式的一个bug ,经过研究,采用自带的jsvc.tar.gz安装包 重新更改启动模式。 
启动文件如下:
#!/bin/sh 

# Startup Script for Tomcat5 

# chkconfig: 345 88 14 
# description: Tomcat Daemon 
# processname: jsvc 
# pidfile: /var/run/jsvc.pid 
# config: 

# Source function library. 
. /etc/rc.d/init.d/functions 

prog=tomcat 

JAVA_HOME=/usr/java/jdk1.5.0_17
CATALINA_HOME=/opt/telecom 
DAEMON_HOME=/opt/telecom/bin 
#TOMCAT_USER=oracle 
TOMCAT_USER=oracle 

# for multi instances adapt those lines. 
TMP_DIR=/var/tmp 
PID_FILE=/var/run/jsvc.pid 
CATALINA_BASE=/opt/telecom 

CATALINA_OPTS= 
CLASSPATH=$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/bin/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar 

case "$1" in 
  start) 
    # 
    # Start Tomcat 
    # 
    $DAEMON_HOME/jsvc-src/jsvc -user $TOMCAT_USER -home $JAVA_HOME -Dcatalina.home=$CATALINA_HOME -Dcatalina.base=$CATALINA_BASE -Djava.io.tmpdir=$TMP_DIR -wait 10 -pidfile $PID_FILE -outfile $CATALINA_HOME/logs/catalina.out -errfile '&1' $CATALINA_OPTS -cp $CLASSPATH org.apache.catalina.startup.Bootstrap 

    # 
    # To get a verbose JVM 
    #-verbose \ 
    # To get a debug of jsvc. 
    #-debug \ 
    exit $? 
    ;; 

  stop) 
    # 
    # Stop Tomcat 
    # 
    $DAEMON_HOME/jsvc-src/jsvc -stop -pidfile $PID_FILE org.apache.catalina.startup.Bootstrap 
    exit $? 
    ;; 

  *) 
    echo "Usage tomcat.sh start/stop" 
    exit 1;; 
esac 

#4


该回复于2015-05-26 09:55:46被管理员删除