oracle tcps 连接,java - Oracle与Tomcat 9的僵尸连接 - 堆栈内存溢出

我在Tomcat 9.0.12上创建了一个非常简单的Web服务,每次调用该服务时,我都会使用DataSource(在conf / context.xml文件中定义)创建与数据库(Oracle 12)的连接,然后再将响应返回到客户端,它将关闭与数据库的连接。

但是,如果我检查数据库上的活动会话,则表明该连接仍处于活动状态,因此我与数据库有很多“僵尸”连接。

我已经在客户端程序中使用了几乎相同的代码,在这种情况下,该程序关闭了连接。 也许是Tomcat的配置错误?

我怎样才能解决这个问题?

谢谢!

conf / context.xml

maxIdle="100"

maxActive="200"

password="PASSWORD"

username="USER"

url="jdbc:oracle:thin:@/192.168.1.248:1521/PRD"

driverClassName="oracle.jdbc.driver.OracleDriver"

type="javax.sql.DataSource"

auth="Container"

name="jdbc_Connection"/>

爪哇

public String method() {

try {

System.out.println("---------------------------------------");

System.out.println("START");

System.out.println("---------------------------------------");

DataSource ds = (DataSource) InitialContext.doLookup("java:comp/env/jdbc_Connection");

Connection DB = ds.getConnection();

String sql ="SELECT VAR FROM TABLE_NAME";

PreparedStatement stmt = null;

try {

stmt = DB.prepareStatement(sql);

ResultSet rs = stmt.executeQuery();

while(rs.next()){

System.out.println("rs->"+rs.getString(1));

}

rs.close();

stmt.close();

} catch (SQLException ex) {

}finally{

if(stmt != null){

try {

stmt.close();

} catch (SQLException ex) {

}

}

}

System.out.println("CLOSE");

DB.close();

} catch (SQLException ex) {

ex.printStackTrace();

} catch (NamingException ex) {

ex.printStackTrace();

}

System.out.println("---------------------------------------");

System.out.println("END");

System.out.println("---------------------------------------");

return "HELLO";

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值