Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Proxool最大连接数_Java_Connection Pooling_Proxool - Fatal编程技术网

Java Proxool最大连接数

Java Proxool最大连接数,java,connection-pooling,proxool,Java,Connection Pooling,Proxool,我正在使用java连接池(版本0.9.1)。一切正常,直到我达到最大连接数。如果达到最大连接计数,proxool会立即抛出一个SQLEXEPION: java.sql.SQLException: Couldn't get connection because we are at maximum connection count (n/n) and there are none available 当然,将显示最大连接计数,而不是n 为什么proxool会立即抛出SQLException,而不

我正在使用java连接池(版本0.9.1)。一切正常,直到我达到最大连接数。如果达到最大连接计数,proxool会立即抛出一个
SQLEXEPION

java.sql.SQLException: Couldn't get connection because we are at maximum 
connection count (n/n) and there are none available
当然,将显示最大连接计数,而不是
n

为什么proxool会立即抛出
SQLException
,而不是等待可用的连接?当然不是永远,但是一个可配置的超时会很好


我不知道这是否重要,但我正在TomcatJ2EE应用程序中使用proxool。proxool的参数在
context.xml中定义,我正在使用。

我快速查看了源代码,这看起来像ConnectionPool.getConnection的标准行为。这句话也是这么说的


还有其他数据库池库(如ApacheDBCP和C3P0),但您必须进行一些重构才能使用它们。另一种方法是自己包装getConnection方法(或修改proxool源代码),并使其按您想要的方式工作。

我快速查看了源代码,这看起来像ConnectionPool.getConnection的标准行为。这句话也是这么说的


还有其他数据库池库(如ApacheDBCP和C3P0),但您必须进行一些重构才能使用它们。另一种方法是自己包装getConnection方法(或修改proxool源代码),并使其按您想要的方式工作。

我在proxool邮件列表上问了这个问题,但很快得到了一个否定的答案


现在不支持可配置(或任何类型的)超时,但是有计划实现此功能。

我在proxool邮件列表上问了这个问题,我得到了一个快速但不幸的否定回答

现在不支持可配置(或任何类型的)超时,但是计划实现此功能。

您可以使用Thread.sleep()来处理它。 当达到最大连接数时,Proxool引发异常。一旦检测到它,您可以通过调用“Thread.sleep()”等待一段时间,希望在这段时间之后,连接将再次可用

public Connection getConnection() throws SQLException { Connection conn = null; while (conn ==null){ try { conn = DriverManager.getConnection("proxool."+connectionPoolAlias); } catch (SQLException e) { e.printStackTrace(); String methodName =e.getStackTrace()[0].getMethodName(); if (methodName.equalsIgnoreCase("checkSimultaneousBuildThrottle") || methodName.equalsIgnoreCase("quickRefuse")){ try{ Thread.sleep(500); }catch( InterruptedException ie){} }else{ throw e; } } } return conn; } 公共连接getConnection()引发SQLException{ 连接conn=null; while(conn==null){ 试一试{ conn=DriverManager.getConnection(“proxool.”+connectionPoolAlias); }捕获(SQLE异常){ e、 printStackTrace(); String methodName=e.getStackTrace()[0].getMethodName(); if(methodName.equalsIgnoreCase(“checkSimultaneousBuildThrottle”)| methodName.equalsIgnoreCase(“QuickRunk”)){ 试一试{ 睡眠(500); }捕获(中断异常) }否则{ 投掷e; } } } 返回连接; } 您可以使用Thread.sleep()来处理它。 当达到最大连接数时,Proxool引发异常。一旦检测到它,您可以通过调用“Thread.sleep()”等待一段时间,希望在这段时间之后,连接将再次可用

public Connection getConnection() throws SQLException { Connection conn = null; while (conn ==null){ try { conn = DriverManager.getConnection("proxool."+connectionPoolAlias); } catch (SQLException e) { e.printStackTrace(); String methodName =e.getStackTrace()[0].getMethodName(); if (methodName.equalsIgnoreCase("checkSimultaneousBuildThrottle") || methodName.equalsIgnoreCase("quickRefuse")){ try{ Thread.sleep(500); }catch( InterruptedException ie){} }else{ throw e; } } } return conn; } 公共连接getConnection()引发SQLException{ 连接conn=null; while(conn==null){ 试一试{ conn=DriverManager.getConnection(“proxool.”+connectionPoolAlias); }捕获(SQLE异常){ e、 printStackTrace(); String methodName=e.getStackTrace()[0].getMethodName(); if(methodName.equalsIgnoreCase(“checkSimultaneousBuildThrottle”)| methodName.equalsIgnoreCase(“QuickRunk”)){ 试一试{ 睡眠(500); }捕获(中断异常) }否则{ 投掷e; } } } 返回连接; }