我正在尝试将WAS7应用程序迁移到Liberty配置文件。 现在我正在尝试获取Datasource Mbean,这是现有代码的一部分。我尝试了多个选项,但我总是得到'javax.management.InstanceNotFoundException'。
我将在下面提供示例代码。如果我错过了什么,请告诉我。
Server.xml中的DataSource:
<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);
我不确定代码,我试图尽可能地保留旧代码。
谢谢你, 六必居
答案 0 :(得分:1)
在您的对象名称中存在小的不匹配情况。 C
上的connectionManager
应为小写,而不是大写。
WebSphere:type=ConnectionPoolStats,name=dataSource[oracleDB]/connectionManager[default-0]
要检查的其他一些事项:
monitor-1.0
功能ConnectionPoolStats
MBean。jconsole
验证MBean的存在,jconsole
是任何JDK附带的Java实用程序。在向您的数据源/连接管理器发出请求后,您应该看到如下的MBean:要使用localConnector-1.0
,您需要启用try {
Connection c = DriverManager.getConnection("jdbc:sqlite:C:/Users/Colin/sale");
String query = "SELECT street FROM sales WHERE postcode = ?";
PreparedStatement s = c.prepareStatement(query);
s.setString(1, pcode);
ResultSet rs = s.executeQuery();
while(rs.next()) {
System.out.println(rs.getString("street"));
}
}
catch (SQLException se) {
se.printStackTrace();
}
功能。您可以在此处找到有关使用JConsole和Liberty的更多信息:
Connecting to Liberty by using JMX