WAS JMX監視アプリケーション開発
5243 ワード
WebSphereを使用すると、独自の監視アプリケーションを開発できます.wasは、最下位のデータを取得するための3つのインタフェースを提供します.
1、Java機械拡張(JMX)に基づくインタフェース
2、PMIクライアントインタフェース
3、servletインタフェース
was 7.0では、PMIクライアントインタフェースの使用は公式に推奨されていません.JMXインタフェースを使用してPMIデータを収集することをお勧めします.
Java管理拡張JMX(Java Management Extents)コネクタには、次のものがあります.
リモートメソッド呼び出し(RMI)コネクタ(Java Remote Method Protocol)
単純オブジェクトアクセスプロトコル(SOAP)コネクタ(Simple Object Access Protocol)
(JSR 160)リモートアプリケーションプログラミングインターフェース(Java Specification Requests)
リモートメソッド呼び出し(JSR 160 RMI)コネクタ
プロセス通信(IPC)コネクタ(Inter-Process Communication)、
SOAPコネクタを使用して、上記の方法で独自のアプリケーションを作成できます.
まずサーバから%WAS_を見つける必要がありますHOME%/plugins/com.ibm.ws.runtime 7.0.0.jarパッケージをクラスパスにインポートします.
コンソールのセキュリティをオンにすると、wasのデフォルトの証明書ライブラリと鍵ライブラリをローカルにダウンロードし、soapでwasに接続するときに使用する必要があります.
次のコードの例を示します.
1、Java機械拡張(JMX)に基づくインタフェース
2、PMIクライアントインタフェース
3、servletインタフェース
was 7.0では、PMIクライアントインタフェースの使用は公式に推奨されていません.JMXインタフェースを使用してPMIデータを収集することをお勧めします.
Java管理拡張JMX(Java Management Extents)コネクタには、次のものがあります.
リモートメソッド呼び出し(RMI)コネクタ(Java Remote Method Protocol)
単純オブジェクトアクセスプロトコル(SOAP)コネクタ(Simple Object Access Protocol)
(JSR 160)リモートアプリケーションプログラミングインターフェース(Java Specification Requests)
リモートメソッド呼び出し(JSR 160 RMI)コネクタ
プロセス通信(IPC)コネクタ(Inter-Process Communication)、
SOAPコネクタを使用して、上記の方法で独自のアプリケーションを作成できます.
まずサーバから%WAS_を見つける必要がありますHOME%/plugins/com.ibm.ws.runtime 7.0.0.jarパッケージをクラスパスにインポートします.
コンソールのセキュリティをオンにすると、wasのデフォルトの証明書ライブラリと鍵ライブラリをローカルにダウンロードし、soapでwasに接続するときに使用する必要があります.
次のコードの例を示します.
package admin ;
import com.ibm.websphere.management.AdminClient;
import com.ibm.websphere.management.AdminClientFactory;
import com.ibm.websphere.management.exception.ConnectorException;
import java.util.*;
import javax.management.*;
public class getjvm {
static ObjectName serverOName = null;
static ObjectName jvmOName = null;
public static void main(String[] args){
AdminClient ac = null;
Properties props = new Properties();
props.setProperty(AdminClient.CONNECTOR_HOST, "192.168.137.211");
props.setProperty(AdminClient.CONNECTOR_PORT, "8880");
props.setProperty(AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP);
props.setProperty(AdminClient.USERNAME, "wasadmin");
props.setProperty(AdminClient.PASSWORD, "wasadmin");
props.setProperty("javax.net.ssl.trustStore", "D:/ssl/DummyClientTrustFile.jks");
props.setProperty("javax.net.ssl.keyStore", "D:/ssl/DummyClientKeyFile.jks");
props.setProperty("javax.net.ssl.trustStorePassword", "WebAS");
props.setProperty("javax.net.ssl.keyStorePassword", "WebAS");
try {
ac = AdminClientFactory.createAdminClient(props);
}
catch (ConnectorException e)
{
System.out.println("Exception creating admin client: " + e);
}
ObjectName on = null;
try {
on = new ObjectName("WebSphere:*");
} catch (MalformedObjectNameException e) {
e.printStackTrace();
}
Set objectNameSet = null;
try {
objectNameSet = ac.queryNames(on, null);
} catch (ConnectorException e) {
e.printStackTrace();
}
System.out.println("adminClient="+ac);
System.out.println("Connect to DeployManagement is OK!");
if(objectNameSet != null) {
Iterator i = objectNameSet.iterator();
while (i.hasNext()) {
on = (ObjectName)i.next();
String type = on.getKeyProperty("type");
if(type != null && type.equals("Server")) {
serverOName = on;
Object value_serverName = null;
try {
value_serverName = ac.getAttribute(serverOName, "name");
} catch (AttributeNotFoundException e) {
e.printStackTrace();
} catch (InstanceNotFoundException e) {
e.printStackTrace();
} catch (MBeanException e) {
e.printStackTrace();
} catch (ReflectionException e) {
e.printStackTrace();
} catch (ConnectorException e) {
e.printStackTrace();
}
System.out.println("serverName =" + value_serverName);
}
if(type != null && type.equals("JVM")) {
jvmOName = on;
Object value_freeMemory = null;
Object value_heapSize = null;
try {
value_freeMemory = ac.getAttribute(jvmOName, "freeMemory");
value_heapSize = ac.getAttribute(jvmOName, "heapSize");
} catch (AttributeNotFoundException e) {
e.printStackTrace();
} catch (InstanceNotFoundException e) {
e.printStackTrace();
} catch (MBeanException e) {
e.printStackTrace();
} catch (ReflectionException e) {
e.printStackTrace();
} catch (ConnectorException e) {
e.printStackTrace();
}
System.out.println("freeMemory =" + value_freeMemory);
System.out.println("heapSize =" + value_heapSize);
}
}
}
else {
System.err.println("ERROR: not found object names!");
}
}
}