Прежде всего, имейте в виду, что я администратор по мониторингу, а не разработчик 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
Это мои вопросы:
Как связать токены идентификации и имена пула ресурсов?
В моем примере приложения в файле context.xml
определено 5 ресурсов, но имеется 15 c3p0бассейны.Это также можно найти в атрибутах C3P0Registry/AllIdentityTokenizedCount
и C3P0Registry/AllPooledDataSourcesCount
.Не существует ли отношения один-к-одному?
Как изготавливаются жетоны идентификации?Они случайные?Что означают две строки?Связаны ли они со значениями процесса или машины?
Спасибо