ORACLE JAPAN Server Release 6.1

 

  |  

  WebLogic Server ホーム   |     JMX Service プログラマーズ ガイド   |   前へ   |   次へ   |   目次   |   索引   |   PDF 版

MBean 通知の使い方

 

以下の節では、WebLogic Server MBean からブロードキャストされる、さまざまな通知の使い方について概説します。

 


概要

すべての WebLogic Server MBean には javax.management.NotificationBroadcaster インタフェースが実装されているため、WebLogic Server MBean は標準の JMX 通知タイプを送信できます。

MBean 通知を監視するには、NotificationListener インタフェースをクライアント アプリケーションに実装し、受信する通知の送信元になる MBean にリスナ クラスを登録します。次の図は、JSP またはサーブレットを使用して通知をモニタする基本的なシステムを示しています。


 

必要に応じて、リスナ クラスには NotificationFilter クラスを登録できます。これにより、リスナが受信する通知に関して詳細な指定を行うことができます。

注意: JMX 通知とその機能の詳細については、Sun Microsystems J2EE JMX 仕様を参照してください。

外部クライアントでの通知の使用

JMX 1.0 仕様では、ブロードキャストを行っている MBean の JVM の外部にあるクライアントで通知を使用できるようにする方法については定義されていません。WebLogic Server バージョン 6.1 では、weblogic.management.RemoteNotificationListener インタフェースを通じて、外部でも通知を使用できるようになっています。

RemoteNotificationListener は、javax.management.NotificationListener および java.rmi.Remote を拡張したものであり、RMI を通じて外部クライアントで MBean 通知を使用できるようにします。次の図に示すように、WebLogic MBean 通知を受信するために、リモートの Java クライアントには、NotificationListener ではなく、RemoteNotificationListener が実装されます。

リモートの Java クライアント リスナの登録は、標準の JMX addNotificationListener() メソッドを使用して行われます。

 


MBean 通知の概要

WebLogic Server 通知では、JMX 1.0 仕様で示されている、標準の通知クラスが使用されます。さらに、WebLogic Server では、WebLogic Server MBean ログ通知を処理するための、追加の通知クラスおよび通知ヘルパー クラスが用意されています。以降の節では、WebLogic Server の JMX アプリケーションで使用できる通知タイプおよび通知クラスについて概説します。

基本的な JMX 通知

すべての WebLogic Server MBean には、NotificationBroadcaster インタフェースが実装されているため、WebLogic Server MBean は JMX 1.0 仕様で示されている通知タイプを生成できます通知タイプは以下のとおりです。

また、特定の WebLogic Server MBean では、「add」メソッドおよび「remove」メソッドを保持する属性用に通知タイプがさらに 2 種類サポートされています。

WebLogic Server ログ通知

WebLogic Server には、ログ メッセージのブロードキャストを処理する LogBroadcasterRuntime MBean が用意されています。ログ通知をリスンする必要のあるクライアント アプリケーションでは、通知リスナを LogBroadcasterRuntime MBean に簡単に登録できます。

WebLogic Server ログ メッセージを表す通知には、以下のような多くの情報が含まれています。

こうした WebLogic Server ログ情報を JMX アプリケーションで抽出し、使用できるよう、WebLogicLogNotification ラッパー クラスが用意されています。WebLogicLogNotification では、メッセージに関連付けられたトランザクション ID、ユーザ ID、およびバージョン番号を取得するメソッドだけでなく、ログ メッセージの部分を抽出する、単純なゲッター メソッドも提供されています。

WebLogic Server ログ通知の処理」では、クラスおよびインタフェースがサポートされているログ通知の使い方の詳細について説明しています。

 


基本的な JMX 通知の使い方

外部クライアント アプリケーションで WebLogic MBean 通知を受信するには、以下の処理を行う必要があります。

  1. RemoteNotificationListener インタフェースを実装します。

  2. 受信する通知の送信元になる MBean へリスナ クラスを登録します。

以降の節では、これらの処理の基本手順について説明します。

通知リスナの作成

通知リスナ クラスは、1 つまたは複数の MBean によってブロードキャストされる JMX 通知を処理します。JMX アプリケーションが、ブロードキャストを行っている MBean の JVM の外部にある場合は、リスナ クラスに weblogic.management.RemoteNotificationListener を実装して、通知の受信時にアクションを実行する handleNotification() クラスを提供する必要があります。次に実装例を示します。

import javax.management.Notification;

import javax.management.NotificationFilter;

import javax.management.NotificationListener;

import javax.management.Notification.*;

...

public class WebLogicLogNotificationListener implements

RemoteNotificationListener {

...

public void handleNotification(Notification notification, Object obj) {

WebLogicLogNotification wln = (WebLogicLogNotification)notification;

System.out.println("WebLogicLogNotification");

System.out.println(" type = " +

wln.getType());

System.out.println(" message id = " +

wln.getMessageId());

System.out.println(" server name = " +

wln.getServername());

System.out.println(" timestamp = " +

wln.getTimeStamp());

System.out.println(" message = " +

wln.getMessage() + "\n");

}

通知リスナの MBean への登録

すべての WebLogic Server MBean は通知をブロードキャストします。このため、使用可能な任意の MBean に NotificationListener を登録できます。NotificationListener は、その MBean の addNotificationListener() メソッドを呼び出すことによって登録できます。

ただし、ほとんどの場合では、MBeanServer の addNotificationListener() メソッドを使用して、リスナを登録することが望ましいと言えます。javax.management.MBeanServer インタフェースを使用することで、登録を行うためだけに特定の MBean をルックアップする手間を省くことができます。たとえば、「 通知リスナの作成」で定義されたリスナは次のように登録されます。

rmbs = home.getMBeanServer();

oname = new WebLogicObjectName("TheLogBroadcaster",

"LogBroadcasterRuntime",

DOMAIN_NAME,

SERVER_NAME);

rmbs.addNotificationListener(oname,

listener,

null,

null);

 


WebLogic Server ログ通知の処理

上記の例で示されているように、ログ メッセージを受信するために、クライアント アプリケーションでは標準の JMX API を使用して、通知リスナを WebLogic Server LogBroadcasterRuntimeMBean に登録できます。LogBroadcasterRuntimeMBean は、サーバによって生成されるログ メッセージ用の通知の生成を行います。

LogBroadcasterRuntimeMBean によってブロードキャストされるすべての通知のタイプは、WebLogicLogNotification です。TheLogBroadcaster という LogBroadcasterRuntimeMBean が、サーバごとに 1 つだけ存在します。

LogBroadcasterRuntimeMBean には、「 MBeanHome からの MBean へのアクセス」で説明されているメカニズムを使用してアクセスできます。

WebLogicLogNotification の内容

WebLogic Server ログ メッセージのすべての JMX 通知には、以下のフィールドがあります。

すべての通知のタイプは、WebLogicLogNotification です。このヘルパー クラスでは、ログ メッセージの個々のフィールドすべてに対するゲッター メソッドが提供されています。WebLogicLogNotification クラスを使用すると、クライアント アプリケーションで重要度、ユーザ ID、サブシステムなどのフィールドに基づいて、ログ通知を簡単にフィルタ処理できます。

次に示す NotificationFilter の例では、WebLogicLogNotification クラスを使用して、特定のメッセージ ID(111000)のメッセージだけが選択され、通知として送信されます。

import javax.management.Notification;

import javax.management.NotificationFilter;

import javax.management.Notification.*;

....

public class WebLogicLogNotificationFilter implements NotificationFilter,

java.io.Serializable {

public WebLogicLogNotificationFilter() {

subsystem = "";

}

public boolean isNotificationEnabled(Notification notification) {

if (!(notification instanceof WebLogicLogNotification)) {

return false;

}

WebLogicLogNotification wln = (WebLogicLogNotification)notification;

if (subsystem == null ||

subsystem.equals("")) {

return true;

}

StringTokenizer tokens = new StringTokenizer(wln.getType(), ".");

tokens.nextToken();

tokens.nextToken();

return (tokens.nextToken().equals(subsystem));

}

public void setSubsystemFilter(String newSubsystem) {

subsystem = newSubsystem;

}

}

WebLogic Server エラー メッセージ用の通知リスナの例

クライアント アプリケーションでは、ログ メッセージを通知として受信し、以下のようなアクションを実行する、さまざまなカスタム NotificationListener を作成できます。

この通知リスナの基本的なフォームは、「 通知リスナの作成」で示されている例とは若干異なります。その例で出力されるメッセージを、通知に応答してアクションを実行する、必要な JDBC 呼び出しまたはページング処理で置き換えてください。

 

back to top previous page next page