问题是这样,我们公司做了一个EJB的小项目。运行一段时间报连接池已满的错误。weblogic.common.resourcepool.ResourceLimitException: No resources currently avai
lable in pool eventdb to allocate to applications, please increase the size of t
he pool and retry..我查看了一下EJB包中的execute方法
部分代码如下:
Properties pro = new Properties();
pro.put("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory");
pro.put("java.naming.provider.url", ip);
InitialContext ctx = null;
try
{
ctx = new InitialContext(pro);
DataSource ds = (DataSource)ctx.lookup(event);
conn = ds.getConnection();
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
}
catch(SQLException e)
{
System.out.println(e.getMessage());
}
catch(NamingException e)
{
System.out.println(e.getMessage());
}
finally
{
try
{
rs.close();
ps.close();
conn.close();
if(rs!=null)
rs=null;
if(ps!=null)
ps=null;
if(conn!=null)
conn=null;
}
catch(Exception e)
{
e.printStackTrace();
}
}
return; InitialContext ctx没有做 close()
想请教你下,导致连接池满的原因是ctx没有释放吗?
weblogic最大连接数是200,实际根本达不到200的
lable in pool eventdb to allocate to applications, please increase the size of t
he pool and retry..我查看了一下EJB包中的execute方法
部分代码如下:
Properties pro = new Properties();
pro.put("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory");
pro.put("java.naming.provider.url", ip);
InitialContext ctx = null;
try
{
ctx = new InitialContext(pro);
DataSource ds = (DataSource)ctx.lookup(event);
conn = ds.getConnection();
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
}
catch(SQLException e)
{
System.out.println(e.getMessage());
}
catch(NamingException e)
{
System.out.println(e.getMessage());
}
finally
{
try
{
rs.close();
ps.close();
conn.close();
if(rs!=null)
rs=null;
if(ps!=null)
ps=null;
if(conn!=null)
conn=null;
}
catch(Exception e)
{
e.printStackTrace();
}
}
return; InitialContext ctx没有做 close()
想请教你下,导致连接池满的原因是ctx没有释放吗?
weblogic最大连接数是200,实际根本达不到200的
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货