META-INF/context.xml配置数据源连接池,获取的Session需要close()吗?

非法字符啊 非法字符啊 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
问题如下:
1.context.xml配置数据源连接池,配置如下
<?xml version="1.0" encoding="UTF-8"?>
<Context reloadable="true" crossContext="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource
name="jdbc/dhlDB"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://xxx.xx.xxx.xxx:xxxx;databaseName=DHL"
maxActive="200"
maxldle="60"
maxWait="10000"
username="mps"
password="mps"
/>
</Context>

2.另外写了一个ConnectionManager类管理connection
public class ConnectionManager {
private static final Logger log = Logger.getLogger(ConnectionManager.class);
private static Connection connection = null;
private static DataSource ds = null;
private static Context initCtx = null;

static {
try {
initCtx = new InitialContext();
ds =(DataSource)initCtx.lookup("java:comp/env/jdbc/dhlDB");
log.info("Read the database config file [context.xml] successful!");
} catch (NamingException e) {
log.error(e);
}
}
public static Connection getConn() {
try {
connection = ds.getConnection();
} catch (SQLException e) {
log.error(e);
}
// log.info("Create a connection successful!");
return connection;
}
public static Connection getConnection(boolean b) {
try {
connection = ds.getConnection();
connection.setAutoCommit(false);
} catch (SQLException e) {
log.error(e);
}
return connection;
}
private ConnectionManager() {
}
}

3.在JDBC操作中,每个类大致如下,获得Connection关闭Connection
public CountryBean getBean(String cty_Code) {
Connection conn = ConnectionManager.getConn();
LoggableStatement st = null;
ResultSet rs = null;
CountryBean bean = null;
try {
st = new LoggableStatement(conn, SELECT_BEAN);
st.setString(1, cty_Code);
rs = st.executeQuery();
while (rs.next()) {
bean = new CountryBean();
bean.setCty_Code(rs.getString("cty_Code"));
bean.setCty_S_Name(rs.getString("cty_S_Name"));
bean.setCty_Display_Name(rs.getString("cty_Display_Name"));
bean.setCty_Description(rs.getString("cty_Description"));
bean.setCty_Status(rs.getString("cty_Status"));
bean.setCty_Area_Code(rs.getString("cty_Area_Code"));
bean.setCty_Region_Code(rs.getString("cty_Region_Code"));
bean.setCty_Time_Zone(rs.getString("cty_Time_Zone"));
bean.setCty_Min_Topup(rs.getString("cty_Min_Topup"));
bean.setCty_Ccy(rs.getString("cty_Ccy"));
bean.setCty_Email_En(rs.getString("cty_Email_En"));
bean.setCty_Email_En_User(rs.getString("cty_Email_En_User"));
bean.setCty_Max_Topup(rs.getString("cty_Max_Topup"));
bean.setCty_Ship_Exp_Pre(rs.getString("cty_Ship_Exp_Pre"));
bean.setCty_Ship_Exp_Cash(rs.getString("cty_Ship_Exp_Cash"));
bean.setCty_Pre_Threshold(rs.getString("cty_Pre_Threshold"));
bean.setCty_Min_Balance(rs.getString("cty_Min_Balance"));
}
} catch (SQLException e) {
log.error(e);
} finally {
try {
rs.close();
st.close();
conn.close();
} catch (SQLException e) {
log.error(e);
}
}
return bean;
}


问题:
有时候服务器的LOG会有ERROR:SQLNestedException: Cannot get a connection, pool error timeout waiting for idle object.
请问:我上面JDBC代码有问题吗?获得一个Connection后需要close()吗?我不懂tomcat的连接池,还是说connection不需要close(),TOMCAT连接池自动会帮我们管理连接呢??还有context.xml配置有问题吗?
...全文

相关推荐

Tomcat7和mysql连接池的配置方法和测试

tomcat7配置mysql链接池。 mysql连接池在在tomcat中可以配置为局部和全局的,文档中分别描述了两种的配置方法

大叔比较胖

hibernate 3.1+tomcat 5.5.x(配置jndi)

hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)

jone33

JavaMail邮件发送机制详解

主要介绍了JavaMail邮件发送机制详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

weixin_38732343

通信行业基于MongoDB的安全合规与性能优化:5G时序数据处理、可查询加密及窗口函数应用

内容概要:本文围绕MongoDB在通信行业的深度应用,系统讲解了可查询加密、时间序列集合、窗口函数与性能诊断四大核心技术。通过详实的代码案例,展示了如何利用可查询加密实现敏感数据合规存储与查询,使用时序集合高效处理5G网络KPI等高频写入场景,借助窗口函数进行经营指标的趋势分析,并结合explain()与查询分析器完成性能调优。文章还涵盖分片一致性检查、索引优化等运维实践,全面覆盖通信系统对安全、性能与扩展性的严苛要求。; 适合人群:具备一定数据库基础,从事通信行业研发、架构或运维工作1-3年的技术人员,尤其是参与5G网络监控、客户数据管理或大数据平台建设的相关人员。; 使用场景及目标:① 实现用户手机号、身份证等敏感信息的加密存储与等值查询,满足安全合规要求;② 构建高吞吐、低延迟的5G基站KPI时序数据存储与分析系统;③ 在数据库层直接完成滑动平均、累计求和等经营分析,减少应用层计算负担;④ 诊断慢查询、验证索引有效性,保障系统高性能运行。; 阅读建议:此资源强调理论与实战结合,建议读者在本地或测试环境部署MongoDB 7.0+版本,动手复现文中代码,重点关注schemaMap配置、时序集合参数选择与窗口函数语法细节,并结合explain执行计划理解底层优化机制,从而真正掌握通信级数据架构的设计精髓。

数智顾问

国央企创新负责人如何借助平台实现技术成果的高价值转化与资源精准配置?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN
评论 4
收藏 已收藏
分享
返回顶部
非法字符啊
非技术区 23,404 成员 70,506 内容