websphere liberty中的DataSource Mbean - 获取实例未找到异常

DataSource Mbean in websphere liberty - getting instance not found exception

我正在尝试将 WAS7 应用程序迁移到 Liberty 配置文件。 现在我正在尝试获取现有 code.I 的一部分的 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);

我不确定代码,我尽量保留旧代码。

谢谢, 比居

您的对象名称中存在轻微的大小写不匹配。 connectionManager 上的 C 应该是小写,而不是大写。

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

其他一些要检查的事项:

  1. 确保您启用了 monitor-1.0 功能
  2. 请注意,由于连接管理器是延迟创建的(直到第一次使用才初始化),在从您的连接管理器获得至少 1 个连接之前,不会有 ConnectionPoolStats MBean。
  3. 您可以通过检查 jconsole 来验证您的 MBean 是否存在,这是任何 JDK 附带的 Java 实用程序。向您的数据源/连接管理器发出请求后,您应该会看到这样的 MBean:

要使用 jconsole,您需要启用 localConnector-1.0 功能。您可以在此处找到有关将 JConsole 与 Liberty 结合使用的更多信息:
Connecting to Liberty by using JMX