BEA ホーム | 製品 | dev2dev | support | askBEA
 ドキュメントのダウンロード   サイト マップ   Glossary 
検索

WebLogic JMX Service プログラマーズ ガイド

 Previous Next Contents Index PDF で侮ヲ  

WebLogic Server MBean へのアクセス

すべての JMX タスク (MBean 属性の表示と変更、通知の使用、および変更のモニタ) では、同じプロセスで MBean にアクセスします。

以下の節では、WebLogic Server MBean にアクセスする方法について説明します。

 


MBean へのアクセス : 主な手順

WebLogic Server で MBean にアクセスするための主な手順は次のとおりです。

  1. weblogic.management.MBeanHome インタフェースを使用して MBean サーバにアクセスします。 MBeanHome インタフェースへのアクセスを参照してください。

  2. 以下のいずれかのインタフェースを使用して、MBean の操作の取得、ルックアップ、および呼び出しを行います。

    ほとんどの場合では、これらのインタフェースを使用して MBean のリストを取得してから、そのリストをフィルタ処理して特定の MBean で操作の取得と呼び出しを行います。しかし、MBean の WebLogicObjectName が分かっている場合は、名前によって直接 MBean を取得できます。

 


使用するインタフェースの決定

MBean にアクセスするときには、どのインタフェースを使用するかに関して 2 つの選択を行う必要があります。

 


MBeanHome インタフェースへのアクセス

ローカル MBeanHome インタフェースまたは管理 MBeanHome インタフェースを取得する最も単純な方法は、WebLogic Server の Helper クラスを使用することです。標準的な J2EE の手法の方がやりやすい場合は、Java Naming and Directory Interface (JNDI) を使用して MBeanHome を取得できます。

ヘルパー API を使用した MBeanHome インタフェースの取得

WebLogic Server には、MBeanHome インタフェースの取得プロセスを簡素化する weblogic.management.Helper クラスが用意されています。

Helper API を使用するには、以下の情報を収集します。

上の情報を収集したら、以下のいずれかの API を使用します。

Helper API の詳細については、WebLogic Server Javadoc を参照してください。

例 : ローカル MBeanHome インタフェースの取得

次の例 (リスト2-1) は、Helper API を使用して MS1 というサーバのローカル MBeanHome インタフェースを取得するクラスです。

コード リスト 2-1 ローカル MBeanHome インタフェースの取得

import weblogic.management.Helper;
import weblogic.management.MBeanHome;
public class UseHelper {
public static void main(String[] args) {
String url = "t3://localhost:7001";
String username = "weblogic";
String password = "weblogic";
String msName = "MS1";
MBeanHome localHome = null;
        try {
localHome = (MBeanHome)Helper.getMBeanHome(username, password, url,
msName);
System.out.println("Local MBeanHome for" + localHome +
" found using the Helper class");
} catch (IllegalArgumentException iae) {
System.out.println("Illegal Argument Exception: " + iae);
}
}
}

JNDI を使用した MBeanHome インタフェースの取得

Helper API では MBeanHome インタフェースを取得する簡単な方法が提供されますが、JNDI を使用して MBeanHome を取得する標準的なアプローチの方がもっとわかりやすいかもしれません。管理対象サーバの JNDI ツリーから、サーバのローカル MBeanHome インタフェースにアクセスできます。管理サーバの JNDI ツリーからは、ドメイン内のすべてのサーバ インスタンスのローカル MBeanHome インタフェースに加えて管理 MBeanHome にもアクセスできます。

JNDI を使用して MBeanHome インタフェースを取得するには、次の手順に従います。

  1. weblogic.jndi.Environment オブジェクトを構築し、Environment メソッドを使用してオブジェクトをコンフィグレーションします。

    1. setSecurityPrincipal メソッドと setSecurityCredentials メソッドを使用してユーザ資格を指定します。

      指定したユーザ資格に、MBeanHome インタフェースを使用して要求を実行するパーミッションが付与されているかどうかが検証されます。 詳細については、『管理者ガイド』の「システム管理操作の保護」を参照してください。

    2. アプリケーションと MBeanHome インタフェースが異なる JVM で実行されている場合は、Environment.setProviderUrl メソッドを使用して MBeanHome インタフェースをホストするサーバ インスタンスを指定します。 URL には、サーバのリスン アドレスと、サーバが管理要求をリスンするポートを指定する必要があります。

      管理 MBeanHome を取得する場合は、setProviderUrl に管理サーバを指定する必要があります。

    3. getInitialContext メソッドを使用して javax.naming.Context オブジェクトを初期化します。

    たとえば、次のコードでは、WLServerHost というホスト コンピュータで動作するサーバ インスタンスへの初期コンテキストを設定し、ドメイン全体のデフォルトの管理ポートを使用して管理要求を受信しています。

    Environment env = new Environment();
    env.setProviderUrl("t3://WLServerHost:9002");
    env.setSecurityPrincipal("weblogic");
    env.setSecurityCredentials("weblogic");
    Context ctx = env.getInitialContext();

    weblogic.jndi.Environment の詳細については、WebLogic Server Javadoc を参照してください。

  2. javax.naming.Context メソッドを使用して、現在のコンテキストの MBeanHome インタフェースをルックアップして取得します。

    ローカル MBeanHome インタフェースと管理 MBeanHome のどちらを取得するかに応じて、以下の API のいずれかを使用します。

以降の節では、MBeanHome インタフェースを取得する例を示します。

例 : 外部クライアントからの管理 MBeanHome の取得

次の例 (リスト2-2) は、異なる JVM で実行されているアプリケーションから管理 MBeanHome インタフェースをルックアップする方法を示したものです。この例で、weblogic は MBean 属性を表示および変更するパーミッションを持つユーザです。 MBean を表示および変更するパーミッションについては、『管理者ガイド』の「システム管理操作の保護」を参照してください。

コード リスト 2-2 外部クライアントからの管理 MBeanHome の取得

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.AuthenticationException;
import javax.naming.CommunicationException;
import javax.naming.NamingException;
import weblogic.jndi.Environment;
import weblogic.management.MBeanHome;
public class RetrieveMBeanHome{
    public static void main(String[] args) {
MBeanHome home = null;
//ドメイン変数
String url = "t3://localhost:7001";
String username = "weblogic";
String password = "weblogic";
        //初期コンテキストを設定
try {
Environment env = new Environment();
env.setProviderUrl(url);
env.setSecurityPrincipal(username);
env.setSecurityCredentials(password);
Context ctx = env.getInitialContext();
            //管理 MBeanHome インタフェースを取得
home = (MBeanHome) ctx.lookup(MBeanHome.ADMIN_JNDI_NAME);
System.out.println("Got the Admin MBeanHome: " + home + " from the
Admin server");
        } catch (Exception e) {
System.out.println("Exception caught:" +e);
}
}
}

例 : 内部クライアントからのローカル MBeanHome の取得

管理サーバ (または管理する WebLogic Server インスタンス) と同じ JVM にクライアント アプリケーションが存在する場合、MBeanHome の JNDI ルックアップはより簡単です。 リスト2-3 は、WebLogic Server インスタンスと同じ JVM で動作している JMX アプリケーションが、t3://localhost:7001 でリスンするサーバ インスタンスのローカル MBeanHome をルックアップする方法を示しています。

コード リスト 2-3 内部クライアントからのローカル MBeanHome の取得

import javax.naming.Context;
import javax.management.ObjectName;
import weblogic.management.MBeanHome;
import weblogic.management.WebLogicMBean;
import weblogic.management.WebLogicObjectName;
import weblogic.jndi.Environment;
public class serverInfo {
public static void main(String[] args) {
        MBeanHome home = null;
//ドメイン変数
String url = "t3://localhost:7001";
String username = "weblogic";
String password = "weblogic";
        try {
Environment env = new Environment();
env.setProviderUrl(url);
env.setSecurityPrincipal(username);
env.setSecurityCredentials(password);
            //初期コンテキストを設定
Context ctx = env.getInitialContext();
             //サーバ固有の MBeanHome インタフェースを取得
home = (MBeanHome)ctx.lookup(MBeanHome.LOCAL_JNDI_NAME);
System.out.println("Got the Server-specific MBeanHome: " + home);

 


型保障インタフェースを使用した MBean へのアクセス

いったん MBeanHome インタフェースを取得したら、MBean の型保障インタフェースを取得する MBeanHome インタフェース内のメソッドを使用して MBean にアクセスするのがもっとも簡単です。

この型保障インタフェースは、WebLogic Server が提供する MBean でのみ使用できます。 独自に作成した MBean タイプに基づく MBean には使用できません。

全 MBean のリストの取得

MBeanHome.getAllMBeans メソッドを使用すると、取得する MBeanHome インタフェースのスコープに含まれる MBean のオブジェクト名をルックアップできます。 たとえば、管理 MBeanHome を取得する場合、getAllMBeans() を使用するとドメイン内のすべての MBean のリストが返されます。 ローカル MBeanHome インタフェースを取得して getAllMBeans() を使用すると、現在のサーバのみの実行時 MBean とドメイン内のすべてのローカル コンフィグレーション MBean のリストが返されます。

リスト2-4 のクラス例 :

  1. JNDI API を使用して、管理 MBeanHome インタフェースを取得します。

  2. MBeanHome.getAllMBeans メソッドを使用して、ドメイン内のすべての MBean を取得します。

  3. MBean のリストを Set オブジェクトに割り当て、Set インタフェースおよび Iterator インタフェースを使用してリスト内を検索します。

  4. WebLogicMBean.getObjectName メソッドを使用して、各 MBean の WebLogicObjectName を取得します。

  5. WebLogicObjectName.getName メソッドおよび getType メソッドを使用して、WebLogicObjectNameName および Type の値を取得します。

この例で、weblogic は MBean 属性を表示および変更するパーミッションを持つユーザです。 MBean を表示および変更するパーミッションについては、『管理者ガイド』の「システム管理操作の保護」を参照してください。

コード リスト 2-4 ドメイン内のすべての MBean の取得

import javax.naming.Context;
import java.util.Set;
import java.util.Iterator;
import weblogic.jndi.Environment;
import weblogic.management.MBeanHome;
import weblogic.management.WebLogicMBean;
import weblogic.management.WebLogicObjectName;
public class ListAllMBeans{
public static void main(String args[]) {
String url = "t3://localhost:7001";
String username = "weblogic";
String password = "weblogic";
        try {
//JNDI を使用して MBeanHome を取得
Environment env = new Environment();
env.setProviderUrl(url);
env.setSecurityPrincipal(username);
env.setSecurityCredentials(password);
Context ctx = env.getInitialContext();
MBeanHome home = (MBeanHome)ctx.lookup(MBeanHome.ADMIN_JNDI_NAME);
            Set allMBeans = home.getAllMBeans();
System.out.println("Size: " + allMBeans.size());
for (Iterator itr = allMBeans.iterator(); itr.hasNext(); ) {
WebLogicMBean mbean = (WebLogicMBean)itr.next();
WebLogicObjectName objectName = mbean.getObjectName();
System.out.println(objectName.getName() + " is a(n) " +
mbean.getType());
}
}catch(Exception e){
System.out.println(e);
}
}
}

MBeanHome.getAllMBeans メソッドの詳細については、WebLogic Server Javadoc を参照してください。

タイプおよびリストからの選択による MBean の取得

MBeanHome のスコープに含まれるすべての MBean のリストを取得する代わりに、特定のタイプと一致する MBean のリストを取得できます。 Type は、MBean が管理するリソースのタイプと、MBean が管理 MBean であるか、ローカル コンフィグレーション MBean であるか、または実行時 MBean であるかを示します。 MBean のタイプの詳細については、WebLogic Server MBean の WebLogicObjectName の使用を参照してください。

リスト2-5 のクラス例 :

  1. JNDI を使用して、管理 MBeanHome インタフェースを取得します。

  2. MBeanHome.getMBeansByType メソッドを使用して、ドメイン内のすべての ServerRuntime MBean のリストを取得します。

  3. MBean のリストを Set オブジェクトに割り当て、Set インタフェースおよび Iterator インタフェースを使用してリスト内を検索します。

  4. ServerRuntime.getName メソッドを使用して、各 ServerRuntime MBean の名前を取得します。 ServerRuntime MBean の名前は、サーバ インスタンスの名前に対応します。

  5. サーバ Server1ServerRuntime MBean が見つかると、標準出力にメッセージが出力されます。

この例で、weblogic は MBean 属性を表示および変更するパーミッションを持つユーザです。 MBean を表示および変更するパーミッションについては、『管理者ガイド』の「システム管理操作の保護」を参照してください。

コード リスト 2-5 MBean のリストからのタイプによる選択

import java.util.Set;
import java.util.Iterator;
import java.rmi.RemoteException;
import javax.naming.Context;
import javax.management.ObjectName;
import weblogic.management.MBeanHome;
import weblogic.management.WebLogicMBean;
import weblogic.management.WebLogicObjectName;
import weblogic.management.configuration.ServerMBean;
import weblogic.management.runtime.ServerRuntimeMBean;
import weblogic.jndi.Environment;
public class serverRuntimeInfo {
    public static void main(String[] args) {
        MBeanHome home = null;
        //ドメイン変数
String url = "t3://localhost:7001";
String serverName = "Server1";
String username = "weblogic";
String password = "weblogic";
        ServerRuntimeMBean serverRuntime = null;
Set mbeanSet = null;
Iterator mbeanIterator = null;
        //JNDI を使用して管理 MBeanHome を取得
//初期コンテキストを設定
try {
Environment env = new Environment();
env.setProviderUrl(url);
env.setSecurityPrincipal(username);
env.setSecurityCredentials(password);
Context ctx = env.getInitialContext();
            //管理 MBeanHome インタフェースを取得
home = (MBeanHome) ctx.lookup(MBeanHome.ADMIN_JNDI_NAME);
System.out.println("Got the Admin MBeanHome: " + home );
} catch (Exception e) {
System.out.println("Exception caught:" +e);
}
        //getMBeansByType メソッドを使用してドメイン内のすべての ServerRuntime MBean
//を取得
try {
mbeanSet = home.getMBeansByType("ServerRuntime");
            //取得結果をサーバ名と比較し、一致する
//ServerRuntime MBean を検索
mbeanIterator = mbeanSet.iterator();
while(mbeanIterator.hasNext()) {
serverRuntime = (ServerRuntimeMBean)mbeanIterator.next();
//serverRuntime.getName を使用して Server1 の ServerRuntime
//MBean を検索
if(serverRuntime.getName().equals(serverName)) {
System.out.println("Got the serverRuntimembean: " +
serverRuntime + " for: " + serverName);
}
}
} catch (Exception e) {
System.out.println("Exception caught:" +e);
}
}
}

MBeanHome.getMBeansByType メソッドの詳細については、WebLogic Server Javadoc を参照してください。

ローカルのコンフィグレーション MBean と実行時 MBean の階層を辿る

WebLogic Server の MBean は、それらが関連付けられているリソースを反映した階層の中に存在します。 たとえば、各サーバ インスタンスには複数の実行キューを含めることができ、WebLogic Server では各 ExecuteQueueMBeanServerMBean の子になることでこの関係が表されます。

MBean の階層を辿ることが、ローカル コンフィグレーション MBean と実行時 MBean を取得する最も簡単な方法です。 管理 MBean を取得する必要がある場合、または管理 MBeanHome を使用して MBean を取得する必要がある場合は、まずタイプで MBean を取得し、それからそのリストをフィルタ処理することをお勧めします。 タイプおよびリストからの選択による MBean の取得を参照してください。

コンフィグレーション MBean 階層のルートは DomainMBean です。 このルートの下には、以下のような MBean があります。

実行時階層のルートは ServerRuntimeMBean です。 このルートの直下には、以下のような MBean があります。

親 MBean では通常、その子を取得するためのメソッドが提供されます。 たとえば ServerMBean.getExecuteQueues は、そのサーバでコンフィグレーションされているすべての ExecuteQueueMBean を返します。

ローカルのコンフィグレーション MBean と実行時 MBean の階層を辿るには、次の手順を行います。

  1. JMX アプリケーションから、ローカルの MBeanHome インタフェースを取得します。

  2. ローカルの MBeanHome インタフェースから、以下のメソッドのいずれかを呼び出して最上位 MBean の 1 つを取得します。

    これらのメソッドでは、DomainMBean または ServerRuntimeMBean 直下の MBean のみ取得できます。 これらのメソッドでは、MBean 階層の最初のレベルより下の MBean は返されません。

  3. 取得した MBean から、MBean の子を取得するメソッドを呼び出します。

    親 MBean で子 MBean を取得するためのメソッドが提供されない場合は、getMBeanByType() を使用し、結果を繰り返し処理して基準と一致する MBean を見つけます。 ローカル コンフィグレーション MBean を取得する場合は、必ず MBean タイプの値に Config を付け足してください。 タイプおよびリストからの選択による MBean の取得を参照してください。

注意: ローカル コンフィグレーション MBean は、値の読み込みのみを目的として取得することをお勧めします。ローカル コンフィグレーション MBean の属性値を変更しないでください。他の管理対象サーバのデータをレプリケートする際、管理サーバは管理 MBean に格納された値を使用します。管理 MBean とローカル コンフィグレーション MBean の値が異なると、通信上の問題が発生するおそれがあります。

リスト2-6 は、ManagedServer1 という名前のサーバ インスタンスにあるすべてのローカル コンフィグレーション ExecuteQueueMBean を取得する例を示しています。

コード リスト 2-6 ローカル コンフィグレーション ExecuteQueueMBean の取得

import javax.naming.Context;
import javax.management.ObjectName;
import weblogic.management.MBeanHome;
import weblogic.management.WebLogicMBean;
import weblogic.management.WebLogicObjectName;
import weblogic.management.configuration.ConfigurationMBean;
import weblogic.management.configuration.ServerMBean;
import weblogic.management.configuration.ExecuteQueueMBean;
import weblogic.jndi.Environment;
public class serverConfigInfo {
public static void main(String[] args) {
MBeanHome home = null;
ServerMBean servercfg = null;
ExecuteQueueMBean[] xqueues = null;
ExecuteQueueMBean xqueue = null;
        //ドメイン変数
String url = "t3://localhost:7001";
String serverName = "ManagedServer1";
String username = "weblogic";
String password = "weblogic";
        try {
Environment env = new Environment();
env.setProviderUrl(url);
env.setSecurityPrincipal(username);
env.setSecurityCredentials(password);
            //初期コンテキストを設定
Context ctx = env.getInitialContext();
            //サーバ固有の MBeanHome インタフェースを取得
home = (MBeanHome)ctx.lookup(MBeanHome.LOCAL_JNDI_NAME);
System.out.println("Got the Server-specific MBeanHome: " + home);
           //ローカル コンフィグレーション ServerMBean を取得
servercfg = (ServerMBean)home.getConfigurationMBean(serverName,
"ServerConfig");
System.out.println("Got the Server Config MBean: " + servercfg);
           //サーバ インスタンスでコンフィグレーションされたすべての
//ExecuteQueue MBean を取得
xqueues = servercfg.getExecuteQueues();
           //結果を繰り返し処理する
for (int i=0; i < xqueues.length; i++){
xqueue = xqueues[i];
System.out.println("Execute queue name: " +
xqueue.DEFAULT_QUEUE_NAME);
System.out.println("Thread count:" + xqueue.getThreadCount());
             }
} catch (Exception e) {
System.out.println("Exception caught:" +e);
}
}
}

サーバ コンフィグレーション MBean を取得するためにどのサーバ インスタンスでも実行できる汎用 JMX コードを作成する場合は、次の手順に従います。

  1. ローカル MBeanHome インタフェースから、getMBeansByType メソッドを使用してサーバの ServerRuntimeMBean を取得します。
    serverRuntime = MBeanHome.getMBeansByType(ServerRuntime)

    ローカル MBeanHome インタフェースは現在のサーバ インスタンスに固有の実行時 MBean にしかアクセスできないので、getMBeansByType(ServerRuntime) は現在のサーバの ServerRuntimeMBean のみを返します。

  2. ServerRuntimeMBeangetName メソッドを使用して、サーバの名前を取得します。
    serverName = serverRuntime.getName()

  3. MBeanHome.getConfigurationMBean を呼び出すときにサーバ名を使用します。
    MBeanHome.getConfigurationMBean(serverName,"ServerConfig")

詳細については、例 : アクティブなドメインとサーバの判別を参照してください。

 


MBeanServer インタフェースを使用した MBean へのアクセス

MBean と対話する標準的な JMX の手法では、javax.management.MBeanServer インタフェースを使用して、MBean サーバに登録されている MBean をルックアップします。その後に、MBeanServer インタフェースを使用して、MBean 属性を取得または設定するか、MBean の操作を呼び出します。 MBeanServer のメソッドの詳細なリストについては、http://jcp.org/aboutJava/communityprocess/final/jsr003/index.html からダウンロードできる JMX 1.0 API のドキュメントを参照してください。 ダウンロードしたアーカイブに、API ドキュメントが格納されています。

WebLogic Server における JMX 実装では、MBeanHome インタフェースを使用して MBeanServer インタフェースをルックアップします。

リスト2-7 のクラス例 :

  1. JNDI を使用して、管理 MBeanHome インタフェースを取得します。 この例では管理 MBean を取得しているため、管理 MBeanHome インタフェースを使用する必要があります。

  2. 管理 MBeanHome インタフェースを使用して、MBeanServer インタフェースを取得します。

  3. MBeanServer.queryNames メソッドを使用して、ドメイン内の JDBCConnectionPoolMBean のすべてのインスタンスをルックアップします。 queryNames メソッド シグネチャでは、文字列 "examples:Type=JDBCConnectionPool,*"Object としてキャストするための例が必要になります。

  4. MBean のリストを Set オブジェクトに割り当て、Set インタフェースおよび Iterator インタフェースを使用してリスト内を検索します。

この例で、weblogic は MBean 属性を表示および変更するパーミッションを持つユーザです。 MBean を表示および変更するパーミッションについては、『管理者ガイド』の「システム管理操作の保護」を参照してください。

コード リスト 2-7 MBeanServer インタフェースの使用

import java.util.Iterator;
import java.util.Set;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.AuthenticationException;
import javax.naming.CommunicationException;
import javax.naming.NamingException;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.QueryExp;
import weblogic.jndi.Environment;
import weblogic.management.MBeanHome;
import weblogic.management.RemoteMBeanServer;
public class ListJDBCInfo {
    public static void main(String[] args) {
QueryExp query = null;
MBeanHome home = null;
RemoteMBeanServer homeServer = null;
        //ドメイン変数
String url = "t3://localhost:7001";
String username = "weblogic";
String password = "weblogic";
        //初期コンテキストを設定
try {
Environment env = new Environment();
env.setProviderUrl(url);
env.setSecurityPrincipal(username);
env.setSecurityCredentials(password);
Context ctx = env.getInitialContext();
            //管理 MBeanHome インタフェースを取得
home = (MBeanHome) ctx.lookup(MBeanHome.ADMIN_JNDI_NAME);
System.out.println("Got the Admin MBeanHome: " + home + " from the
Admin server");
            //MBeanServer インタフェースを取得
homeServer = home.getMBeanServer();
            //オブジェクト名に「JDBCConnectionPool」の含まれる
//MBean のリストを取得
Set JDBCMBeans = homeServer.queryNames(new
ObjectName("mydomain:Type=JDBCConnectionPool,*"), query);
//「query」は JMX javax.managementQueryExp を実装する
//オブジェクト
            for (Iterator itr = JDBCMBeans.iterator(); itr.hasNext(); ) {
ObjectName mbean = (ObjectName)itr.next();
System.out.println("Matches to the MBean query:" + mbean);
}
}catch(Exception e){
System.out.println(e);
}
}
}

 


WebLogic Server MBean の WebLogicObjectName の使用

WebLogic Server MBean をインスタンス化すると、weblogic.management.WebLogicObjectName の規約に準拠した名前で登録されます。MBean の WebLogicObjectName がわかっている場合は、MBeanHome インタフェースを取得した後に名前で直接 MBean を取得できます。

MBean の WebLogicObjectName は、次の規約に基づいて、すべてのドメインにわたって固有となる識別名を特定の MBean に与えます。

domain:Name=name,Type=type[,Location=serverName]
[,TypeOfParentMBean=NameOfParentMBean][,TypeOfParentMBean1=NameOfParentMBean1]...

attribute=value の組み合わせの順序はそれほど重要ではありませんが、名前は必ず domain: から始める必要があります。 また、MBean で複数の親 MBean を表現することもできます。

たとえば、次の例は MyServer というサーバ インスタンスにデプロイされているアプリケーション内の EJB の EJBComponentRuntime MBean の WebLogicObjectName です。 この名前の属性と値の組み合わせのうち、1 番目と 4 番目 (ApplicationRuntime=MyServer_MyEARServerRuntime=MyServer) はこの EJB の親 MBean を表します。

mydomain:ApplicationRuntime=MyServer_MyEAR,Location=MyServer,Name=MyServer_MyEAR_SessionEJB,ServerRuntime=MyServer,Type=EJBComponentRuntime

次の表では、この名前の各コンポーネントについて説明します。

表2-3 WebLogic Server MBean の命名規約

コンポーネント

指定されるもの

domain

WebLogic Server 管理ドメインの名前。

Name=name

関連するリソースを作成したときに指定した文字列。たとえば、JDBC 接続プールを作成する場合、そのプールの名前 (MyPool1 など) を指定する必要がある。 MyPool1 を表す JDBCConnectionPoolMBean は、その JMX オブジェクト名に Name=MyPool1 を使用する。

WebLogicObjectName.getName メソッドは、特定の MBean に対するこの値を返す。

MBean を作成したら、この Name コンポーネントの値として、ドメイン内の他のどの MBean とも異なるユニークな値を指定する必要がある。

Type=type

MBean がそのインスタンスとなっているインタフェース クラスを表す。すべての WebLogic Server MBean は、weblogic.management.configuration パッケージまたは weblogic.management.runtime パッケージで定義されているいずれかのインタフェース クラスのインスタンスである。 コンフィグレーション MBean については、Type はインスタンスが管理 MBean であるのかそれともローカル コンフィグレーション MBean であるのかも示す。 すべての WebLogic Server MBean インタフェース クラスの詳細なリストについては、weblogic.management.configuration パッケージまたは weblogic.management.runtime パッケージの WebLogic Server Javadoc を参照。

Type コンポーネントに指定する値を決めるには、次の手順に従う。

    1. MBean のインタフェース クラスを見つけて、クラス名から MBean サフィックスを削除する。 たとえば、weblogic.management.runtime.JDBCConnectionPoolRuntimeMBean
    のインスタンスである MBean の場合は、JDBCConnectionPoolRuntime を使用する。

    2. ローカル コンフィグレーション MBean の場合は、名前に Config を付加する。 たとえば、weblogic.management.configuration.JDBCConnectionPoolMBean
    インタフェース クラスのインスタンスであるローカル コンフィグレーション MBean の場合は、JDBCConnectionPoolConfig を使用する。それに対応する管理 MBean インスタンスでは、JDBCConnectionPool を使用する。

Location=servername

すべての実行時 MBean とローカル コンフィグレーション MBean には Location コンポーネントがある。このコンポーネントは、MBean が格納されているサーバの名前を指定する。管理 MBean にこのコンポーネントはない。

たとえば、myserver という名前のサーバで動作する ServletRuntime MBean では、WebLogicObjectName に次のコンポーネントが含まれる。

mydomain:Name=myServlet,Type=ServletRuntime,Location=
myserver

WebLogicObjectName.getLocation メソッドは、特定の MBean に対するこの値を返す。

TypeOfParentMBean=
NameOfParentMBean

親 MBean と子の関係を持つ実行時 MBean、ローカル コンフィグレーション MBean、または管理 MBean が、オブジェクト名でこの特別な属性を使用して関係を識別する。

注意: DomainMBean を除き、すべての MBean はドメインの DomainMBean の直接的または間接的な子である。この親子関係はすべての MBean に当てはまるので、WebLogicObjectName では表現されない。

たとえば、LogMBean のインスタンスは、ドメイン全体のログ ファイルをコンフィグレーションするためにドメインによって使用される。また、各 WebLogic Server インスタンスは、サーバ固有のログ ファイルをコンフィグレーションするために LogMBean の固有のインスタンスを保持する。 ドメインで使用される LogMBean は子の関係を表現しないが、サーバ インスタンスで使用される LogMBean はサーバの ServerMBean との子の関係を表現する (図 2-1 を参照)。

examplesServer がそのログ ファイルを管理するために使用する管理 LogMBean の名前を表現するには、次の名前を使用する。

examples:Name=examplesServer,Server=examplesServer,
Type=Log

examplesServer がそのログ ファイルを管理するために使用するローカル コンフィグレーション LogMBean の名前を表現するには、次の名前を使用する。

examples:Location=examplesServer,Name=examplesServer,
ServerConfig=examplesServer,Type=LogConfig

規約では、WebLogic Server の子 MBean は Name コンポーネントに親 MBean と同じ値を使用する。たとえば、examplesServer Server MBean の子である LogMBean はその WebLogicObjectNameName=examplesServer を使用する。親 MBean に同じタイプの複数の子がある場合、WebLogic Server ではこの規約に従うことができない。

MBean の WebLogicObjectName が親子関係を表現するかどうかを判断するには、WebLogicObjectName.getParent メソッドまたは weblogic.Admin GET コマンドを使用する。


 

図 2-1 では、LogMBean のインスタンスの 1 つは DomainMBean の子で、これを使用してドメイン全体のログ ファイルを管理しています。 LogMBean のもう 1 つのインスタンスはサーバ インスタンスの ServerMBean の子で、これを使用してサーバ固有のログ ファイルを管理しています。 WebLogicObjectNameTypeOfParentMBean=NameOfParentMBean コンポーネントにより、MBean インスタンスのアプリケーション内でのあいまいさが排除されています。

図2-1 LogMBean インスタンスの親子関係


 

 


weblogic.Admin を使用した WebLogicObjectName の検索

MBean の WebLogicObjectName に指定する値がわからない場合は、weblogic.Admin ユーティリティを使用して WebLogicObjectName を検索できます。このユーティリティでは、アクティブなサーバ インスタンス上の WebLogic Server MBean についてのみ情報が返されます。

たとえば、examples ドメインにある LogMBean の管理インスタンスの WebLogicObjectName を検索するには、examplesServer 管理サーバで次のコマンドを入力します。管理サーバのリスン ポートは 8001 で、weblogic は MBean の属性を表示するパーミッションを持つユーザの名前とパスワードです。

java weblogic.Admin -url localhost:8001 -username weblogic
-password weblogic GET -pretty -type Log

このコマンドでは、リスト2-8 の出力が返されます。出力を見ると、このコマンドでは管理サーバ上の Log タイプの 2 つの MBean が返されることがわかります。最初の MBean (examples:Name=examplesServer,Server=examplesServer,Type=Log) には、examplesServerServerMBean と子の関係があります。この関係は、その MBean がサーバ固有のログ ファイルをコンフィグレーションする LogMBean であることを示します。2 番目の MBean (examples:Name=examples,Type=Log) には子の関係はありません。つまり、ドメイン全体のログ ファイルをコンフィグレーションする MBean であるということです。

-pretty を指定すると、各 MBean の属性と値が weblogic.Admin ユーティリティによって別の行に配置されます。 この引数を指定しない場合は、それぞれの属性と値の組み合わせが中括弧 ({}) で囲まれ、すべてが 1 行に出力されます。

コード リスト 2-8 weblogic.Admin の出力

---------------------------
MBeanName: "examples:Name=examplesServer,Server=examplesServer,Type=Log"
CachingDisabled: true
FileCount: 7
FileMinSize: 500
FileName: examplesServer¥examplesServer.log
FileTimeSpan: 24
Name: examplesServer
Notes:
NumberOfFilesLimited: false
ObjectName: examplesServer
Parent: examplesServer
Registered: false
RotationTime: 00:00
RotationType: none
Type: Log
---------------------------
MBeanName: "examples:Name=examples,Type=Log"
CachingDisabled: true
FileCount: 7
FileMinSize: 500
FileName: ./logs/wl-domain.log
FileTimeSpan: 24
Name:examples
Notes:
NumberOfFilesLimited: false
ObjectName:examples
Parent:examples
Registered: false
RotationTime: 00:00
RotationType: none
Type: Log

LogMBean のローカル コンフィグレーション MBean インスタンスを表示するには、type 引数の値に Config を付加します。

java weblogic.Admin -url localhost:8001 -username weblogic -password weblogic GET -pretty -type LogConfig

このコマンドでは、リスト2-9 の出力が返されます。出力を見ると、ローカル コンフィグレーション MBean の WebLogicObjectNameLocation コンポーネントが含まれていることがわかります。

コード リスト 2-9 ローカル コンフィグレーション MBean

---------------------------
MBeanName: "examples:Location=examplesServer,Name=examplesServer,ServerConfig=examplesServer,Type=LogConfig"
CachingDisabled: true
FileCount: 7
FileMinSize: 500
FileName: examplesServer¥examplesServer.log
FileTimeSpan: 24
Name: examplesServer
Notes:
NumberOfFilesLimited: false
ObjectName: examplesServer
Registered: false
RotationTime: 00:00
RotationType: none
Type: LogConfig
---------------------------
MBeanName: "examples:Location=examplesServer,Name=examples,Type=LogConfig"
CachingDisabled: true
FileCount: 7
FileMinSize: 500
FileName: ./logs/wl-domain.log
FileTimeSpan: 24
Name:examples
Notes:
NumberOfFilesLimited: false
ObjectName:examples
Registered: false
RotationTime: 00:00
RotationType: none
Type: LogConfig

 

Back to Top Previous Next