【发布时间】:2011-01-19 18:28:33
【问题描述】:
我在 GlassFish 上有一个 Java-JSF Web 应用程序,我想在其中使用连接池。因此,我创建了一个 application 作用域 bean,它与 Connection 实例一起为其他 bean 服务:
public class DatabaseBean {
private DataSource myDataSource;
public DatabaseBean() {
try {
Context ctx = new InitialContext();
ecwinsDataSource = (DataSource) ctx.lookup("jdbc/myDataSource");
} catch (NamingException ex) {
ex.printStackTrace();
}
}
public Connection getConnection() throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException {
Connection connection = myDataSource.getConnection();
System.out.println("Succesfully connected: " + connection);
//Sample: Succesfully connected: com.sun.gjc.spi.jdbc40.ConnectionHolder40@7fb213a5
return connection;
}
}
这样连接池很快就会被填满;在“db-related”视图中导航几次后,应用程序停止并显示以下内容:
RAR5117:无法从连接池 [mysql_testPool] 获取/创建连接。原因:使用中的连接等于 max-pool-size 和过期的 max-wait-time。无法分配更多连接。 RAR5114:分配连接时出错:[分配连接时出错。原因:使用中的连接等于 max-pool-size 和过期的 max-wait-time。无法分配更多连接。] java.sql.SQLException:分配连接时出错。原因:使用中的连接等于 max-pool-size 和过期的 max-wait-time。无法分配更多连接。
我正在关闭所有方法中的连接和其他资源。应用程序通过独立连接运行一切正常。
我做错了什么?任何提示或建议将不胜感激。
【问题讨论】:
标签: java mysql jdbc glassfish connection-pooling