Как связать имена пула c3p0 identityTokens и JDBC

Прежде всего, имейте в виду, что я администратор мониторинга, а не разработчик Java.

Я хочу отслеживать некоторые значения атрибутов пулов c3p0, и я обнаружил, что такие пулы имеют уникальный identity Token который состоит из буквенно-цифровой строки и шестнадцатеричной строки, соединенной с символом канала, например:

2rxggs9vtsz4i48lg1tk|665e33d4

Но пулы JDBC, найденные в context.xml Файл сервера Tomcat показывает только стандартные имена:

    <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" />

Я использую JAR для запроса MBeans запущенного процесса Java через соединение JMX. Здесь Catalina:type=Resource из них:

Catalina:type=Resource,resourcetype=Context,path=/myapp,host=localhost,class=com.mchange.v2.c3p0.ComboPooledDataSource,name="jdbc/EXAMPLE"/scope (String) = Shareable
Catalina:type=Resource,resourcetype=Context,path=/myapp,host=localhost,class=com.mchange.v2.c3p0.ComboPooledDataSource,name="jdbc/EXAMPLE"/description (String) = DB Connection
Catalina:type=Resource,resourcetype=Context,path=/myapp,host=localhost,class=com.mchange.v2.c3p0.ComboPooledDataSource,name="jdbc/EXAMPLE"/name (String) = jdbc/EXAMPLE
Catalina:type=Resource,resourcetype=Context,path=/myapp,host=localhost,class=com.mchange.v2.c3p0.ComboPooledDataSource,name="jdbc/EXAMPLE"/type (String) = com.mchange.v2.c3p0.ComboPooledDataSource

а здесь 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

Это мои вопросы:

  1. Как связать имена токенов и имена пула ресурсов?

  2. В моем примере приложения есть 5 ресурсов, определенных в context.xml файл, но есть 15 пулов c3p0. Это также найдено в C3P0Registry/AllIdentityTokenizedCount и в C3P0Registry/AllPooledDataSourcesCount атрибутов. Разве нет отношений один-к-одному?

  3. Как создаются идентификационные токены? Они случайные? Что означают две строки? Связаны ли они с ценностями процесса или машины?

Спасибо

1 ответ

  1. <Resource name="..."> name - это имя jndi, без обязательной связи с именем JMX. Если вы хотите, чтобы было соединение, установите свойство dataSourceName среди всех остальных вы устанавливаете постоянное имя.

  2. Между личными отношениями нет PooledDataSources и идентификационные токены / токены. Типичный PooledDataSource может содержать три идентифицированных токена элемента. Тем не менее, должен быть только один компонент JMX на PooledDataSource,

  3. Идентификационные токены - это, по сути, случайные значения, но с некоторыми детерминированными частями, основанными на хосте, предназначенными для предотвращения возможности столкновения. (В Java теперь есть встроенная поддержка UUID, но не было, когда был написан c3p0.)

Возможно, вы не захотите иметь дело с токенами идентификации в вашей администрации c3p0 DataSources. Пока вы уверены, что ваш DataSourceу каждого есть уникальный dataSourceNameУстановив, вы можете исключить маркер идентификации из имени JMX и иметь стабильные, воспроизводимые имена JMX. Пожалуйста, смотрите раздел Конфигурирование и управление c3p0 через JMX.

Другие вопросы по тегам