Java 如何链接c3p0池标识和JDBC池名称

Java 如何链接c3p0池标识和JDBC池名称,java,jmx,monitor,c3p0,jdbc-pool,Java,Jmx,Monitor,C3p0,Jdbc Pool,首先,请记住,我是一名监控管理员,而不是Java开发人员 我想监控c3p0池的一些属性值,我发现这些池有一个唯一的标识标记,该标识由字母数字字符串和十六进制字符串与管道字符连接而成,例如: 2rxggs9vtsz4i48lg1tk|665e33d4 但是在tomcat服务器的context.xml文件中找到的JDBC池只显示标准名称: <Resource name="jdbc/EXAMPLE" jdbcUrl="jdbc:oracle:thin:@orac

首先,请记住,我是一名监控管理员,而不是Java开发人员

我想监控c3p0池的一些属性值,我发现这些池有一个唯一的
标识标记
,该标识由字母数字字符串和十六进制字符串与管道字符连接而成,例如:

2rxggs9vtsz4i48lg1tk|665e33d4
但是在tomcat服务器的
context.xml
文件中找到的JDBC池只显示标准名称:

    <Resource name="jdbc/EXAMPLE"
            jdbcUrl="jdbc:oracle:thin:@oracle:1521:PRExxx" user="EXAMPLE"
            password="my34xXple" auth="Container" description="DB Connection"
            driverClass="oracle.jdbc.driver.OracleDriver" maxPoolSize="50"
            minPoolSize="2" maxIdleTime="30" checkoutTimeout="2000"
            acquireIncrement="1" maxConnectionAge="3600"
            factory="org.apache.naming.factory.BeanFactory" type="com.mchange.v2.c3p0.ComboPooledDataSource"
            preferredTestQuery="SELECT 1 FROM dual" />
这里是com.mchange.v2.c3p0

com.mchange.v2.c3p0:type=C3P0Registry/AllIdentityTokenCount (Integer) = 15
com.mchange.v2.c3p0:type=C3P0Registry/AllIdentityTokenizedCount (Integer) = 15
com.mchange.v2.c3p0:type=C3P0Registry/AllPooledDataSourcesCount (Integer) = 5
com.mchange.v2.c3p0:type=PooledDataSource[2rxggs9vtsz4i48lg1tk|665e33d4]/dataSourceName (String) = 2rxggs9vtsz4i48lg1tk|665e33d4
com.mchange.v2.c3p0:type=PooledDataSource[2rxggs9vtsz4i48lg1tk|665e33d4]/threadPoolNumIdleThreads (Integer) = 3
com.mchange.v2.c3p0:type=PooledDataSource[2rxggs9vtsz4i48lg1tk|665e33d4]/acquireRetryAttempts (Integer) = 30
com.mchange.v2.c3p0:type=PooledDataSource[2rxggs9vtsz4i48lg1tk|665e33d4]/autoCommitOnClose (Boolean) = false
com.mchange.v2.c3p0:type=PooledDataSource[2rxggs9vtsz4i48lg1tk|665e33d4]/identityToken (String) = 2rxggs9vtsz4i48lg1tk|665e33d4
以下是我的问题:

  • 如何链接标识令牌和资源池名称

  • 在我的示例应用程序中,
    context.xml
    文件中定义了5个资源,但有15个c3p0池。这也可以在
    c3p0注册表/AllIdentityTokenizedCount
    c3p0注册表/allpooleddatasourcescont
    属性中找到。不是一对一的关系吗

  • 身份标识是如何制作的?它们是随机的吗?这两个字符串是什么意思?它们是否与过程值或机器值相关联

  • 谢谢

  • 名称是一个jndi名称,与JMX名称没有必要的连接。如果希望存在连接,请将要设置的所有其他属性中的属性
    dataSourceName
    设置为一致的名称

  • PooledDataSources
    和身份令牌/令牌化之间没有一对一的关系。典型的
    PooledDataSource
    可能包含三个标识化元素。但是,每个
    PooledDataSource
    应该只有一个JMXbean

  • 标识令牌基本上是随机值,但有一些基于主机的确定性部分,旨在确保不会发生冲突。(Java现在内置了对UUID的支持,但在编写c3p0时没有。)

  • 您可能希望在管理c3p0
    DataSource
    s时不必处理身份令牌。只要您确保您的
    数据源
    s每个都有唯一的
    数据源名
    s集合,就可以从JMX名称中删除标识标记,并具有稳定、可复制的JMX名称。请看

    com.mchange.v2.c3p0:type=C3P0Registry/AllIdentityTokenCount (Integer) = 15
    com.mchange.v2.c3p0:type=C3P0Registry/AllIdentityTokenizedCount (Integer) = 15
    com.mchange.v2.c3p0:type=C3P0Registry/AllPooledDataSourcesCount (Integer) = 5
    com.mchange.v2.c3p0:type=PooledDataSource[2rxggs9vtsz4i48lg1tk|665e33d4]/dataSourceName (String) = 2rxggs9vtsz4i48lg1tk|665e33d4
    com.mchange.v2.c3p0:type=PooledDataSource[2rxggs9vtsz4i48lg1tk|665e33d4]/threadPoolNumIdleThreads (Integer) = 3
    com.mchange.v2.c3p0:type=PooledDataSource[2rxggs9vtsz4i48lg1tk|665e33d4]/acquireRetryAttempts (Integer) = 30
    com.mchange.v2.c3p0:type=PooledDataSource[2rxggs9vtsz4i48lg1tk|665e33d4]/autoCommitOnClose (Boolean) = false
    com.mchange.v2.c3p0:type=PooledDataSource[2rxggs9vtsz4i48lg1tk|665e33d4]/identityToken (String) = 2rxggs9vtsz4i48lg1tk|665e33d4