DataSource Mbean в свободе веб-сферы - исключение получения экземпляра не найдено

Я пытаюсь перенести приложение WAS7 в профиль Liberty. И теперь я пытаюсь получить Datasource Mbean, который является частью существующего кода. Я пробовал несколько вариантов, но всегда получаю «javax.management.InstanceNotFoundException».

Я даю пример кода ниже. Пожалуйста, дайте мне знать, если я что-то пропустил.

Источник данных в Server.xml:

<library id="oracle-lib">
    <fileset dir="lib" includes="ojdbc6.jar"/>
</library>

<dataSource jndiName="jdbc/db" id="oracleDB" type="javax.sql.DataSource">
    <jdbcDriver javax.sql.DataSource="oracle.jdbc.pool.OracleConnectionPoolDataSource" libraryRef="oracle-lib" />
    <connectionManager agedTimeout="10" maxIdleTime="1800" connectionTimeout="180"  minPoolSize="10" maxPoolSize="1" reapTime="180"/>
    <properties.oracle user="user" password="password"
                url="jdbc:oracle:thin:@//db-server:1521/db"/>
</dataSource>

Java-код:

MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName jvmQuery = new ObjectName("WebSphere:type=ConnectionPoolStats,name=dataSource[oracleDB]/ConnectionManager[default-0]")
Set mBeans = mbeanServer.queryMbeans(jvmQuery,null);
MBeanInfo beanInfo = mbeanServer.getMBeanInfo(jvmQuery);

Я не уверен в коде, я стараюсь максимально сохранить старый код.

Спасибо, Биджу.


person Biju N B    schedule 09.01.2017    source источник


Ответы (1)


В имени вашего объекта есть незначительное несоответствие регистра. C на connectionManager должен быть в нижнем, а не в верхнем регистре.

WebSphere:type=ConnectionPoolStats,name=dataSource[oracleDB]/connectionManager[default-0]

Еще несколько вещей, которые нужно проверить:

  1. Убедитесь, что у вас включена функция monitor-1.0
  2. Обратите внимание, что, поскольку диспетчеры соединений создаются лениво (не инициализируются до первого использования), не будет ConnectionPoolStats MBean, пока не будет получено хотя бы 1 соединение от вашего диспетчера соединений.
  3. Вы можете проверить наличие вашего MBean, проверив jconsole, утилиту Java, которая поставляется с любым JDK. После того, как к вашему источнику данных/диспетчеру соединений был сделан запрос, вы должны увидеть такой MBean:

введите здесь описание изображения

Чтобы использовать jconsole, вам нужно включить функцию localConnector-1.0. Дополнительную информацию об использовании JConsole с Liberty можно найти здесь:
Подключение к Liberty с помощью JMX

person Andy Guibert    schedule 09.01.2017
comment
Спасибо, Энди .., C была опечаткой. Я попробовал вышеописанное, и это сработало. Единственное, я внес небольшие изменения в ObjectName, глядя на JConsole. - person Biju N B; 10.01.2017