Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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 如何验证连接池是否正常工作_Java_Oracle_Tomcat_Jdbc_Connection Pooling - Fatal编程技术网

Java 如何验证连接池是否正常工作

Java 如何验证连接池是否正常工作,java,oracle,tomcat,jdbc,connection-pooling,Java,Oracle,Tomcat,Jdbc,Connection Pooling,我已经在我的Tomcat配置中设置了连接池,但现在我想验证它是否实际工作 是否有方法转储活动连接的某种ID,以便我可以验证请求之间是否使用了相同的ID?我查过了,但没用 提前谢谢 简单的检查就可以了 SELECT SID, SERIAL# FROM V$SESSION WHERE SID = SYS_CONTEXT('USERENV', 'SID') 如果池大小为1,您将从任何连接对象获得相同的值。如果您的池大小更大(这还取决于您是否有固定的池大小,或者是否在需要时将其设置为增长),并且您同时

我已经在我的Tomcat配置中设置了连接池,但现在我想验证它是否实际工作

是否有方法转储活动连接的某种ID,以便我可以验证请求之间是否使用了相同的ID?我查过了,但没用

提前谢谢

简单的检查就可以了

SELECT SID, SERIAL# FROM V$SESSION WHERE SID = SYS_CONTEXT('USERENV', 'SID')
如果池大小为1,您将从任何连接对象获得相同的值。如果您的池大小更大(这还取决于您是否有固定的池大小,或者是否在需要时将其设置为增长),并且您同时有许多活动连接,那么您应该获得不同双胞胎的池大小数

如果连接是非池连接,则每次创建和打开一个新的连接对象都将返回不同的值。

简单的检查是必要的

SELECT SID, SERIAL# FROM V$SESSION WHERE SID = SYS_CONTEXT('USERENV', 'SID')
如果池大小为1,您将从任何连接对象获得相同的值。如果您的池大小更大(这还取决于您是否有固定的池大小,或者是否在需要时将其设置为增长),并且您同时有许多活动连接,那么您应该获得不同双胞胎的池大小数


如果连接是非池连接,则每次创建和打开一个新的连接对象都会返回不同的值。

有一个简单的答案,而且这个答案更有效:如果您配置了连接池,并且没有在代码中的任何位置显式打开到数据库的连接,手动连接创建的不存在应该是连接池中某些东西起作用的线索


由于连接池来自Tomcat,它还将包含在数据中,您可以通过JMX-enable JMX访问这些数据,并与jconsole连接。这将在您查看时为您提供有关连接池的确切负载(已使用的连接、空闲连接、预分配的连接)的信息。

有一个简单的答案,它可以让您做更多的工作:如果您配置了连接池,并且没有在代码中的任何位置显式打开到数据库的连接,手动连接创建的不存在应该是连接池中某些东西起作用的线索


由于连接池来自Tomcat,它还将包含在数据中,您可以通过JMX-enable JMX访问这些数据,并与jconsole连接。这将在您查看时为您提供有关连接池的确切负载(已用连接、空闲连接、预分配连接)的信息。

您使用的是什么连接池?您考虑过吗?一个连接池包含多个连接。无法保证在请求之间始终获得相同的连接。顺便说一句,您还可以得到一个新的连接对象,它包装了实际的、重用的物理连接。您可以只打印正在获取的连接的类名。它应该是您池中的一个类,而不是JDBC驱动程序中的一个类@Paul我正在使用JDBC。您正在使用什么连接池?您考虑过吗?一个连接池包含几个连接。无法保证在请求之间始终获得相同的连接。顺便说一句,您还可以得到一个新的连接对象,它包装了实际的、重用的物理连接。您可以只打印正在获取的连接的类名。它应该是您池中的一个类,而不是JDBC驱动程序中的一个类@Paul我正在使用JDBC。这看起来像是我所希望的,但我必须承认我不知道代码是什么,也不知道如何使用它。它看起来不像Java,也不像Bash。我错过什么了吗?(这是SQL吗?如果是的话,我完全不知道它有那个功能)这是SQL。通过java连接执行它并返回值。另一个选项是在连接应用程序时,从数据库中的V$SESSION查看记录,例如使用SELECT SID,SERIAL#from V$SESSION WHERE PROGRAM=''。这看起来像是我所希望的,但我必须承认我不知道该代码是什么或如何使用它。它看起来不像Java,也不像Bash。我错过什么了吗?(这是SQL吗?如果是的话,我完全不知道它有那个功能)这是SQL。通过java连接执行它并返回值。另一个选项是在连接应用程序时查看数据库中V$SESSION中的记录,例如使用SELECT SID,SERIAL#from V$SESSION,其中PROGRAM=''。