Oracle® Fusion Middleware

Oracle WebLogic Server JMXによる管理の容易なアプリケーションの開発

11gリリース1 (10.3.6)

B55538-06(原本部品番号:E13729-06)

2015年4月

このマニュアルでは、JMXを使用して管理可能アプリケーションを作成する方法について説明します。

Oracle Fusion Middleware Oracle WebLogic Server JMXによる管理の容易なアプリケーションの開発, 11gリリース1 (10.3.6)

B55538-06

Copyright © 2007, 2015, Oracle and/or its affiliates.All rights reserved.

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標は許可の元に使用され、SPARC International, Incの商標または登録商標です。AMD、Opteron、AMDのロゴおよびAMD OpteronのロゴはAdvanced Micro Devicesの商標または登録商標です。UNIXはThe Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- ドキュメントのアクセシビリティについて

- 表記規則

1 概要とロードマップ

- ドキュメントの内容と対象読者

- このドキュメントの手引き

- 関連ドキュメント

- JMX開発者向けのサンプル

- このリリースでの新機能と変更された機能

2 JMXの理解

- JMXで開発できる管理サービス

- 管理対応アプリケーションの作成

- いつJMXを使用するか

- JMXレイヤー

- 間接性と内部参照

- 通知とモニターMBean

- JMX通知をブロードキャストおよび受信する方法

- モニターMBeanによるアクティブなポーリング

3 管理可能アプリケーションの設計

- Oracleのベスト・プラクティスの利点

- 標準MBeanの使用

- WebLogic Server実行時BeanサーバーへのカスタムMBeanの登録

- ドメイン実行時MBeanサーバーへのカスタムMBeanの登録

- ApplicationLifecycleListenerを使用したアプリケーションMBeanの登録

- アプリケーションのアンデプロイ時のアプリケーションMBeanの登録解除

- EJBおよびサーブレットから委託クラスへの管理ロジックの配置

- オープンMBeanデータ型の使用

- 必要時のみの通知の送信

- その他の設計の考慮事項

- JVMプラットフォームMBeanサーバーへのMBeanの登録

- JDKクラスのみを使用したアプリケーションMBeanの登録

- 管理対象オブジェクトとビジネス・オブジェクトの構成

- 管理クラスのパッケージ化と管理クラスへのアクセス

- ロールおよびポリシーによるカスタムMBeanの保護

4 カスタムMBeanのインストゥルメントと登録

- MBean開発プロセスの概要

- 管理インタフェースの作成と実装

- ビジネス・メソッドの修正によるデータのプッシュ

- MBeanの登録

- アプリケーションとMBeanクラスのパッケージ化

5 WebLogic Server JMXタイマー・サービスの使用

- WebLogic Server JMXタイマー・サービスの概要

- タイマー・サービスの作成:主な手順

- 通知を送信するようにタイマーMBeanを構成する

- Dateオブジェクトの作成

- 例:通知を午前9時から5分ごとに生成する

- 通知の削除

6 カスタムMBeanへのアクセス

- JConsoleからカスタムMBeanへのアクセス

- WebLogic Scripting ToolからカスタムMBeanへのアクセス

- 管理コンソール拡張からカスタムMBeanへのアクセス

はじめに

「はじめに」では、このガイド『JMXによる管理の容易なアプリケーションの開発』で使用されるドキュメントのアクセシビリティ機能と規約について説明します。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docaccを参照してください。

Oracleサポートへのアクセス

サポートをご購入のOracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細情報はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoか、聴覚に障害のあるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。

表記規則

このマニュアルでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

斜体

イタリックは、ユーザーが特定の値を指定するプレースホルダー変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

1 概要とロードマップ

アプリケーション開発者は、アプリケーションに管理機能を実装することによって、アプリケーションの運用および管理コストを大幅に減らすことができます。最も単純な機能は、メッセージ・ロギングです。この機能は、アプリケーションの内部で発生したイベントをレポートし、ファイルまたはその他のリポジトリにメッセージを書き込むものです。アプリケーションの重要度、プロダクション環境の複雑さ、およびオペレーション・センターで使用しているモニター・システムによっては、Java Management Extensions (JMX)をベースとするより高度な機能を構築することでニーズをさらに満たすことができます。JMXを使用すると、汎用管理システムでアプリケーションをモニターし、注意が必要なときに通知を生成し、アプリケーションの構成または実行時の状態を変更することで問題を解決できます。

このマニュアルでは、JMXを使用して管理の容易なアプリケーションを作成する方法について説明します。

以下の節では、このガイド『JMXによる管理の容易なアプリケーションの開発』の内容と構成について説明します。

- ドキュメントの内容と対象読者

- このドキュメントの手引き

- 関連ドキュメント

- JMX開発者向けのサンプル

- このリリースでの新機能と変更された機能

ドキュメントの内容と対象読者

このマニュアルは、Java EEアプリケーション用の管理サービスを開発するソフトウェア開発者を対象としています。また、WebLogic Serverを評価するビジネス・アナリストや、特定のアプリケーションでJMXの使用を考えているシステム設計者にとって便利な情報も掲載されています。

このマニュアルは、Java EEおよび一般的なアプリケーション管理の概念に精通している読者を対象としています。

このマニュアルは、ソフトウェア・プロジェクトの設計段階と開発段階に関する情報を説明するものです。このマニュアルでは、プロダクション段階での管理、モニター、パフォーマンス・チューニングについては扱いません。そのようなトピックに関するWebLogic Serverのマニュアルや情報源へのリンクについては、「関連情報」を参照してください。

このドキュメントでは、限定的でありながら有用な一連のJMX管理サービスを開発するための実践的な方法を重点的に扱います。JMXをより広範な管理上の問題に適用するには、「関連ドキュメント」に挙げるJMX仕様などのドキュメントを参照してください。

このドキュメントの手引き

- この章第1章「概要とロードマップ」では、このマニュアルの構成を紹介します。

- 第2章「JMXの理解」では、JMXの概要と、Java EEアプリケーション開発者がJMXを使用する方法について説明します。

- 第3章「管理可能アプリケーションの設計」では、JMXでJava EEアプリケーションの管理を容易にするための設計パターンについて説明します。

- 第4章「カスタムMBeanのインストゥルメントと登録」では、独自のMBean (カスタムMBean)を作成することによって、アプリケーションをより大規模な管理システムの管理対象オブジェクトにする方法について説明します。

- 第5章「WebLogic Server JMXタイマー・サービスの使用」では、JMXタイマー・サービスのWebLogic Serverの実装を使用して、JMXクライアントが指定した時間に、または定期的にタスクを実行するように構成する方法について説明します。

- 第6章「カスタムMBeanへのアクセス」では、JMX以外の手段でMBeanにアクセスするためのオプションについて説明します。

関連ドキュメント

Oracle Technology Networkには、JMXに関する書籍、ホワイトペーパー、および詳細情報へのリンクが掲載されたWebサイト(http://www.oracle.com/technetwork/java/javase/tech/javamanagement-140525.html)があります。

JMX 1.2仕様を参照する場合は、(http://jcp.org/aboutJava/communityprocess/final/jsr003/index3.html)からダウンロードしてください。

JMXリモートAPI 1.0仕様を参照する場合は、(http://jcp.org/aboutJava/communityprocess/final/jsr160/index.html)からダウンロードしてください。

javax.management*パッケージのAPIリファレンスは、http://download.oracle.com/javase/6/docs/api/overview-summary.htmlで参照できます。

WebLogic Serverアプリケーション用に他のタイプの管理サービスを開発するためのガイドラインについては、以下のドキュメントを参照してください:

- 『Oracle WebLogic Serverアプリケーション・ロギングのためのロギング・サービスの使用』は、WebLogicによるログ・メッセージの国際化とローカライゼーションのサポートについて説明し、WebLogic Serverで提供されているテンプレートおよびツールを使用して、ロケール固有のメッセージ・カタログを作成または編集する方法を示します。

- 『Oracle WebLogic Server診断フレームワークの構成と使用』。システム管理者が、JMX、ロギングなどの管理機能を通じて公開されていないアプリケーション・モニター・データを収集する方法について説明します。

WebLogic Serverアプリケーションを開発およびチューニングするためのガイドラインについては、『Oracle WebLogic Serverアプリケーションの開発』を参照してください。

JMX開発者向けのサンプル

このマニュアルの他にも、Avitek Medical Recordsアプリケーション(MedRec)に2つのJMXコード・サンプルが用意されています。MedRecはWebLogic Serverに付属したエンドツーエンドのサンプルJava EEアプリケーションであり、一元的で独立した医療記録管理システムをシミュレートします。MedRecアプリケーションには、患者、医師、および管理者に対して、様々なクライアントを使用して患者のデータを管理するフレームワークが用意されています。

注意:
デフォルトでは、WLSコード・サンプルおよびMedRecサンプル・アプリケーションはインストールされません。コード・サンプルおよびMedRecをインストールするには、WebLogic Serverのカスタム インストールを選択して、インストールするサーバー・サンプルを選択する必要があります。

MedRecのJMXコードでは、次の管理タスクが例示されています。

- JMXを使用したアプリケーションのモニター
MedRecのセッションEJBの1つは、JMXで管理するためにインストゥルメントされています。EJBは、データベースへの書込み回数を追跡し、そのカウンタをMBean属性として公開します。

- JMXを使用したセキュリティ・レルムの拡張
MedRecアプリケーションのJSPおよびサポートJavaクラスはJMX APIを呼び出して、新しい管理者ユーザーをMedRecセキュリティ・レルムに追加します。このJSPは新しいユーザー情報を収集するためのインタフェースを提供し、サポート・クラスはその情報を検証して新しいユーザーをレルムに挿入します。

MedRecのJMXコード・サンプルに関する情報を参照するには、次の手順に従います:

1. MedRecサーバーを起動します。
MedRecは、WL_HOME/samples/domains/medrecディレクトリから起動できます - ここで、WL_HOMEはWebLogic Serverインストール先の最上位ディレクトリです。Medical Recordドメイン用の管理ユーザー名/パスワードは、weblogic/weblogicです。

2. MedRecサーバーが起動すると、Webブラウザにホーム・ページが表示されます。MedRecホーム・ページで、「その他のサンプル」リンクをクリックします。
WebLogic Server Code Examplesビューアが表示されます。

3. Code Examplesビューアの左ペインで、次のいずれかを実行します。

- 「Avitek Medical Records Sample Application」>「Features」>「JMX」を展開します。「Monitoring an Application with JMX」トピックを選択します。

- 「Avitek Medical Records Sample Application」>「Features」>「Security」を展開します。「Extending a Realm Using JMX」トピックを選択します。

このリリースでの新機能と変更された機能

JMXリリースでの新機能と変更点については、『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』の現在のリリースにおける新機能と変更点に関する項を参照してください。

このリリースで導入されたWebLogic Serverの新機能の一覧については、『Oracle WebLogic Serverの新機能』を参照してください。

2 JMXの理解

Java Management Extensions (JMX)は、Javaアプリケーションをモニターおよび管理するための仕様です。これにより、汎用管理システムでアプリケーションをモニターし、注意が必要なときに通知を生成し、アプリケーションの状態を変更して問題を解決できます。JMXはSNMPおよび他の管理規格と同様に公開された仕様であり、一般的に用いられるモニター用製品を扱うベンダーの多くでサポートされています。

WebLogic Serverは、JDK 6に含まれているJava Management Extensions (JMX) 1.2実装を使用します。以下の節では、JavaアプリケーションでJMXを使用して実行時メトリックと制御ポイントを管理システムに通知する方法について説明します。

- JMXで開発できる管理サービス

- 管理対応アプリケーションの作成

- いつJMXを使用するか

- JMXレイヤー

- 間接性と内部参照

- 通知とモニターMBean

WebLogic ServerでJava EEアプリケーションを管理するために使用できるその他のAPIおよびユーティリティについては、『Oracle WebLogic Serverの紹介』のWebLogic Serverシステム管理の概要に関する項を参照してください。

JMXで開発できる管理サービス

アプリケーションのモニターと管理に使用する場合、JMXは通常、管理アプリケーションが管理データを収集するJavaクラスのプロパティにアクセスできるようにします(図2-1を参照)。多くの場合、これらのクラス・プロパティは、アプリケーションが消費するリソースを追跡する単純なカウンタです。また、JMXは、アプリケーションのプロセスの開始または停止、またはクラス・プロパティ値のリセットを行うJavaクラスのメソッドへのアクセスも提供します。JMXを介して管理データを公開するクラスを、マネージドBean (MBean)と呼びます。また、MBeanを介して公開されるクラス・プロパティを属性、メソッドを操作と呼びます。

図2-1 JMXが提供する管理プロパティへのアクセス

JMX対応管理ユーティリティへのこのようなアクセスを実現したら、システム管理者または運用スタッフは管理データをシステムの全体図に統合できます。JMX管理ユーティリティを使用することで、MBean属性の現在の値を参照したり、JMXモニターを設定してMBean属性値を定期的にポーリングしたり、属性値が特定のしきい値を超えた場合にのみ管理ユーティリティに通知が送信されるようにしたりできます。

管理対応アプリケーションの作成

システム管理者または運用スタッフにすべての管理責任を負わせるかわりに、MBeanをモニターする管理対応アプリケーションを作成して、一部のタスクを自動的に実行することができます。例:

- 接続プールをモニターし、必要に応じてプールを拡張または縮小するアプリケーション。

- デプロイされているアプリケーションすべてをモニターするポータル・アプリケーション。新しいアプリケーションがデプロイされた場合、ポータル・アプリケーションはそのアプリケーションを新しいポートレットとして自動的に表示します。

- コネクタ・モジュールのデプロイメントをリスニングし、新しくデプロイされたモジュールを使用するアプリケーション。

いつJMXを使用するか

データベース、JMS接続、JMSキャッシュなど、リソースを大量に消費する重要なJava EEアプリケーションは、そのリソース消費をモニターする機能を備えている必要があります。このようなアプリケーションでは、データベースに対する読み書きが常に行われるため、ロギング機能を使用して読み書き処理のたびにメッセージを出力することは不可能です。この種のモニター機能のためにJMXを使用することにより、容易に管理でき、ネットワーク・リソースの利用を最適化する管理(インストゥルメンテーション)コードを記述できます。

アプリケーションの基本的な実行時メトリックをモニターする場合は、WebLogic Serverに用意されている様々な独自のMBeanを使用できます(『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』のWebLogic Serverイベントのリスニングのベスト・プラクティスに関する項を参照)。たとえば、既存のWebLogic Server MBeanを使用してアプリケーションのサーブレットのヒット率や、サーブレット・リクエストの処理時間を追跡できます。

WebLogic Server MBeanはオペレーション・センターに対してリソースの全般的な状態を通知できますが、特定のアプリケーションがどのようにリソースを使用しているかについての詳細な情報は提供できません。たとえば、WebLogic Server MBeanは接続プール内の使用中の接続数を通知することはできますが、接続プールを使用しているアプリケーションは通知できません。ドメインに複数のアクティブなアプリケーションが存在し、一部の接続が常に使用されていることに気づいた場合、各アプリケーションがいつ接続を取得し、解放するかをモニターするMBeanを作成します。また、停止していると見なされたセッションを終了する管理操作を組み込むこともできます。

さらに、アプリケーションが独自のキャッシュを作成および保持し、アプリケーション・コンテナの制御下にないデータ・リポジトリに書き込む場合、そのキャッシュのサイズまたはリポジトリに書き込まれるデータの量をモニターするMBeanを作成します。

JMXレイヤー

Java EEと同じように、JMXはコンポーネント・ベースの技術であり、様々な種類のベンダーが多様なコンポーネントを提供しています。こうした分業化によって、各ベンダーはそれぞれの専門分野のソフトウェアだけの開発に専念できます。JMXでは、これらのコンポーネントは以下のレイヤーにまとめられます。

- インストゥルメンテーション
開発するアプリケーション、リソース、およびその他の管理可能オブジェクトで構成されます。このレイヤーでは、アプリケーション開発者がマネージドBean (MBean)を作成します。MBeanは、外部の管理システムに公開するプロパティ(属性)とメソッド(操作)を備えています。

- エージェント
JVMとアプリケーション・サーバー(WebLogic Serverなど)で構成されます。このレイヤーには、MBeanのレジストリと、MBeanの作成、破棄、およびアクセスを行うための標準インタフェースが含まれます。

また、エージェント・レイヤーには、モニターおよびタイマー・サービスに加えてリモート・クライアント用のサービスが含まれます。『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』の第5章「WebLogic Server JMXタイマー・サービスの使用」および通知とモニターMBeanの使用方法に関する項を参照してください。

- 分散サービス
管理コンソールまたはその他のJava EEアプリケーションで構成されます。管理アプリケーションがエージェント・レイヤーのリクエストを送受信します。多くの場合、このレイヤーは管理コンソールが様々な管理プロトコル(JMXやSNMPなど)をサポートできるようにするためのプラグインまたはアダプタとして使用できます。

間接性と内部参照

JMXを理解するための2つの主要な概念は、間接性と内部参照です。これらの概念を採用することで、JMXアプリケーションは独自のクラス定義にアクセスすることなく独自のリソースを管理できるようになります。

JMXの一般的なモデルでは、分散サービス・レイヤーに属するアプリケーションは、インストゥルメント・レイヤーに属するクラスと直接対話することがありません。かわりに、この間接性のモデルでは、JMXエージェント・レイヤーは以下のことを行う標準インタフェース(javax.management.MBeanServerConnectionなど)を提供します。

- クラス管理インタフェースを分散サービス・レイヤーの管理クライアントに公開する

- 管理クライアントからリクエスト(クラスがJMXを介して公開するプロパティの値を取得するためのリクエストなど)を受け取る

- クラスと対話してリクエストを実行し、その結果を管理クライアントに返す

各クラスは、JMXを介して公開するプロパティとメソッドのセットをMBeanサーバーに通知します。クラスがJMXを介して公開するプロパティをMBean 属性と呼び、公開するメソッドを操作と呼びます。JMXは、クラスがその属性と操作を通知するために使用できる複数の方法(設計パターン)を指定します。これらの設計パターンは、標準、動的、モデル、オープンというタイプのMBeanとして形式化されています。

標準MBeanタイプを実装するクラスは、その管理インタフェースをJavaプログラミングとほぼ同じ方法で記述します。開発者は、JMXを介して公開される各クラス・プロパティのゲッターおよびセッター・メソッドを備えたJMXインタフェース・ファイルを作成します。インタフェース・ファイルには、公開される各クラス・メソッドのラッパー・メソッドも含まれます。クラスは、そのJMXインタフェースの名前を宣言します。標準MBeanをMBeanサーバーに登録すると、MBeanサーバーはクラスとそのJMXインタフェースを内部参照して、分散サービス・レイヤーに公開するJMX属性および操作を決定します。また、MBeanサーバーは、インタフェースを記述するMBeanInfoオブジェクトを作成します。管理クライアントは、このMBeanInfoオブジェクトを調べてクラスの管理インタフェースについて学びます。

モデルMBeanタイプを実装するクラスは、その独自のMBeanInfoオブジェクトを作成することによってその管理インタフェースを記述します。MBeanInfoオブジェクトは、JMXを介して公開するプロパティとメソッドを記述するメタデータ・オブジェクト・セットです。モデルMBeanをMBeanサーバーに登録すると、MBeanサーバーはクラスを内部参照するかわりに既存のMBeanInfoオブジェクトを使用します。

通知とモニターMBean

JMXでは、2通りの方法でMBeanの変更をモニターできます。MBeanは、特定のイベント(属性値の変更など)の発生時に通知を送信できます。また、モニターMBeanは、MBeanを定期的にポーリングして属性値を取得できます。

以下の節では、JMX通知とモニターMBeanについて説明します。

- JMX通知をブロードキャストおよび受信する方法

- モニターMBeanによるアクティブなポーリング

JMX通知をブロードキャストおよび受信する方法

MBean作成の一部として、javax.management.NotificationEmitterインタフェースを実装できます。これにより、MBeanは様々な種類のイベントが発生したときに通知を送信できます。たとえば、アプリケーションによる接続プールの使用状態を管理するMBeanを作成するとします。この場合、アプリケーションが接続を作成したときに通知を送信し、接続を破棄したときに別の通知を送信するようにMBeanを構成できます。

通知をリスニングするには、javax.management.NotificationListener.handleNotification()メソッドを実装するリスナー・クラスを作成します。このメソッドの実装には、リスナーが通知の受信時にアクションを実行するためのロジックを組み込みます。リスナー・クラスを作成したら、リスナーをMBeanに登録する別のクラスを作成します。

デフォルトによって、MBeanは登録されているすべてのリスナーにすべての通知を送信します。しかし、リスナーのフィルタを作成して登録することもできます。フィルタは、javax.management.NotificationFilter.isNotificationEnabled()メソッドを実装するクラスです。このメソッドの実装では、1つまたは複数の通知タイプを指定します。(この場合、タイプは、vendorA.appB.eventCのような、イベントを識別する通知オブジェクト内のユニークな文字列です。)イベントの発生によってMBeanが通知を生成する場合、MBeanは通知をリスナーに送信する前にフィルタのisNotificationEnabled()メソッドを呼び出します。通知タイプがisNotificationEnabled()で指定した値の1つと一致した場合、フィルタはtrueを返し、MBeanは関連付けられているリスナーにメッセージを送信します。

リスナーおよびフィルタの作成および登録については、『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』のWebLogic Server MBeanからの通知のリスニング手順に関する項を参照してください。JMX通知の詳細は、JMX 1.2仕様を参照してください。「関連ドキュメント」を参照してください。

図2-2に、MBeanが送信した通知の一部だけを通知リスナーが受信する基本システムを示します。

図2-2 MBeanからの通知の受信

モニターMBeanによるアクティブなポーリング

JMXには、モニターMBeanというMBeanの仕様が含まれています。モニターMBeanをインスタンス化して構成することにより、他のMBeanを定期的に検査できます。モニターMBeanは、特定のMBean属性が指定されたしきい値を超えた場合にJMX通知を送信します。モニターMBeanでは、MBeanの属性の値そのもの、または数値属性の2つの連続する値の差異(オプション)を観察できます。モニターMBeanが観察する値は、派生ゲージと呼びます。

派生ゲージが一連の条件を満たす場合、モニターMBeanは特定の通知タイプを送信します。また、属性値のモニター中に一定のエラー状態が発生した場合にも通知を送信できます。

モニターMBeanを使用するには、モニターを構成して、観察対象のMBeanに登録します。次に、リスナー・クラスを作成して、そのクラスをモニターMBeanに登録します。モニターMBeanは非常に特殊な種類の通知のみを送信するので、通常、モニターMBeanからの通知をリスニングする際にはフィルタは使用しません。

図2-3に、モニターMBeanをMBeanに登録する基本システムを示します。NotificationListenerがモニターMBeanに登録され、モニターMBean内の条件が満たされたときに通知を受信します。

図2-3 モニターMBean

3 管理可能アプリケーションの設計

JMX設計パターンとデプロイメント・オプションを使用することで、アプリケーションの管理をより容易にすることができます。以下の節では、管理が容易なアプリケーションを設計するためのOracleのベスト・プラクティスについて説明します。最後の節「その他の設計の考慮事項」では、Oracleの推奨方法にかわる方法を示すとともに、その他の設計の考慮事項について説明します。

- Oracleのベスト・プラクティスの利点

- 標準MBeanの使用

- WebLogic Server実行時BeanサーバーへのカスタムMBeanの登録

- ドメイン実行時MBeanサーバーへのカスタムMBeanの登録

- ApplicationLifecycleListenerを使用したアプリケーションMBeanの登録

- アプリケーションのアンデプロイ時のアプリケーションMBeanの登録解除

- EJBおよびサーブレットから委託クラスへの管理ロジックの配置

- オープンMBeanデータ型の使用

- 必要時のみの通知の送信

- その他の設計の考慮事項

Oracleのベスト・プラクティスの利点

Oracleが推奨する設計パターンは、Javaクラスのインストゥルメンテーションが以下の条件を満たすことを前提としています。

- できるだけ少ないシステム・リソースを使用し、管理機能がビジネス機能に干渉しません。

- 可能な限りビジネス・コードから分離します。

- ビジネス・コードと一緒にデプロイされ、そのライフサイクルを共有します。開発者は、運用スタッフが余計な手順を実行しなくてもアプリケーションを管理できるようにする必要があります。

標準MBeanの使用

JMXでは様々な設計パターンが定義されていますが、その中でも、最も簡単に記述できる標準MBeanを使用することをお薦めします。標準MBeanを使用する最も単純な設計パターンでは、以下のことを行います。

1. 公開する管理プロパティと管理操作のインタフェースを作成します。

2. インタフェースをJavaクラスに実装します。

3. 実行時MBeanサーバーのjavax.management.MBeanServerConnection.createMBean()メソッドを呼び出して、管理インタフェースをこのメソッドのパラメータで渡すことによって、WebLogic Server実行時MBeanサーバーでMBeanを作成および登録します。
createMBean()メソッドを呼び出すと、実行時MBeanサーバーは、インタフェースを内部参照し、実装を見つけ、インタフェースと実装をMBeanとして登録します。

この設計パターンでは、管理インタフェースとその実装は、MBeanサーバーがインタフェースを内部参照できるように、厳格なネーミング・ルールに準拠していなければなりません。この命名要件を回避するには、Javaクラスをjavax.management.StandardMBeanの拡張にします。http://download.oracle.com/javase/6/docs/api/javax/management/StandardMBean.htmlにあるJava SE 6.0 API仕様の「StandardMBean」を参照してください。

WebLogic Server実行時BeanサーバーへのカスタムMBeanの登録

JVMには、複数のMBeanサーバーが存在できます。設計上、ここで決定しなけれならないのは、どのMBeanサーバーを使用してカスタムMBeanを登録するかということです。

カスタムMBeanは、WebLogic Server実行時MBeanサーバーに登録することをお薦めします(各WebLogic Serverインスタンスには、実行時MBeanサーバーの独自のインスタンスが含まれます。『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』のMBeanサーバーに関する項を参照してください。)WebLogic Server 10.3.3以降では、WebLogic実行時MBeanサーバーはJVMのプラットフォームMBeanサーバーです。「JVMプラットフォームMBeanサーバーへのMBeanの登録」を参照してください。

その場合、次のことに留意してください。

- MBeanはWebLogic Server MBeanと同じMBeanサーバーに存在します。リモートJMXクライアントは、アプリケーションのMBeanとWebLogic Server MBeanをモニターするための接続を1つだけ維持する必要があります。

- JMXクライアントがカスタムMBeanとWebLogic Server MBeanにアクセスするには、WebLogic Serverセキュリティ・フレームワークを通して認証と認可を受けなければなりません。詳細は、「ロールおよびポリシーによるカスタムMBeanの保護」を参照してください。

WebLogic Server実行時MBeanサーバーは、そのjavax.management.MBeanServerインタフェースをJNDIツリーに登録します。『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』の実行時MBeanサーバーへのローカル接続に関する項を参照してください。

ドメイン実行時MBeanサーバーへのカスタムMBeanの登録

管理対象サーバーにある他のMBeansで実行を呼び出す集約タイプMBeansを登録する必要がある場合は、MBeansをドメイン実行時MBeanサーバーに登録します。

WebLogic Serverドメイン実行時MBeanサーバーは、そのjavax.management.MBeanServerインタフェースをJNDIツリーに登録します。『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』のドメインの実行時MBeanサーバーへのローカル接続に関する項を参照してください。

ApplicationLifecycleListenerを使用したアプリケーションMBeanの登録

EJB、Webアプリケーションのサーブレット、またはデプロイされているその他のモジュール用のMBeanを作成し、そのMBeanをアプリケーションのデプロイと同時に使用できるようにする場合、デプロイメント・サービスからの通知をリスニングします。アプリケーションをデプロイ(およびデプロイ済みのアプリケーションが存在するサーバーを起動)するときに、WebLogic Serverデプロイメント・サービスはデプロイメント・プロセスの特定の段階で通知を送信します。アプリケーションがデプロイされたことを示す通知を受信したら、MBeanを作成および登録できます。

ApplicationLifecycleListenerでデプロイメント通知をリスニングするには、以下の2つの手順を行います。

1. weblogic.application.ApplicationLifecycleListenerの拡張クラスを作成します。次に、MBeanを作成してMBeanサーバーに登録するためのApplicationLifecycleListener.postStartメソッドを実装します。このクラスは、デプロイメント・サービスからのpostStart通知の受信後にpostStart()メソッドを呼び出します。『WebLogic Serverアプリケーションの開発』のアプリケーション・ライフサイクル・イベントのプログラミングに関する項を参照してください。

2. weblogic-application.xmlデプロイメント記述子で、作成したクラスをアプリケーション・リスナー・クラスとして登録します。

独自のWebLogic Serverクラスとデプロイメント記述子を使用せずにアプリケーションMBeanを登録する場合は、「JDKクラスのみを使用したアプリケーションMBeanの登録」を参照してください。

アプリケーションのアンデプロイ時のアプリケーションMBeanの登録解除

MBeanの作成方法に関係なく、アプリケーションがアンデプロイされたことを伝えるデプロイメント通知を受信したときにMBeanの登録を解除することをお薦めします。このようにしない場合、メモリー・リークが発生する可能性があります。

ApplicationLifecycleListenerの拡張クラスを作成する場合、ApplicationLifecycleListener.preStopメソッドを実装してMBeanの登録を解除できます。preStopメソッドの実装については、「MBeanの登録」を参照してください。

EJBおよびサーブレットから委託クラスへの管理ロジックの配置

任意のタイプのEJB (セッション、エンティティ、メッセージドリブン)またはサーブレットの管理属性と管理操作を公開する場合、管理属性と管理操作を独立した委託クラスに実装して、EJBまたはサーブレット実装クラスがビジネス・ロジックだけで構成され、そのビジネス・インタフェースがビジネス・ロジックだけを表すようにすることをお薦めします。「図3-1」を参照してください。

図3-1 管理プロパティおよび操作の委託クラスへの配置

図3-1では、EJBのビジネス・メソッドは、そのデータを委託クラスにプッシュします。たとえば、特定のビジネス・メソッドが呼び出されるたびに、そのメソッドは委託クラスのカウンタを増分し、MBeanインタフェースはカウンタ値を属性として公開します。この方法の例については、MedRecサンプル・サーバーを参照してください。

このようにビジネス・ロジックを管理ロジックから分離した場合、特に委託クラスのカウンタが頻繁に増分されるような条件では、ロジックを同じクラスに組み込んだ場合より効率が悪くなる可能性があります。しかし、実際には、ほとんどのJVMはメソッド呼出しを最適化することによって効率の低下をごくわずかなものにとどめます。

使用するアプリケーションでこのわずかな違いを許容できない場合、EJBのビジネス・クラスに管理値を組み込み、JMXクライアントからの要求時に委託クラスがその値を取得できるようにします。

オープンMBeanデータ型の使用

リモートJMXクライアントがカスタムMBeanにアクセスする場合、MBean属性のデータ型と操作が返すデータ型をjavax.management.openmbean.OpenTypeに定義したデータ型に制限することをお薦めします。すべてのJVMはこれらのベース・タイプにアクセスできます。http://download.oracle.com/javase/6/docs/api/javax/management/openmbean/OpenType.htmlにあるJava SE 6.0 API仕様の「OpenType」を参照してください。

MBeanがその他のデータ型を公開する場合、それらのデータ型はシリアライズ可能でなければならず、リモートJMXクライアントのクラス・パスにそれらのデータ型が存在しなければなりません。

必要時のみの通知の送信

MBeanは、通知を送信するたびにメモリーとネットワーク・リソースを使用します。MBean属性の値が頻繁に変更される場合、このようなメモリーとリソースの利用は望ましくありません。

属性が変更されるたびに通知を送信するようにMBeanを構成するかわりに、モニターMBeanを使用してカスタムMBeanを定期的にポーリングすることによって、属性が変更されたかどうかを調べることをお薦めします。モニターMBeanを構成すると、属性が特定の方法で変更された場合、または特定のしきい値に達した場合にのみ通知を送信できます。

詳細は、『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』の直接的なリスニングとモニターのベスト・プラクティスに関する項を参照してください。

その他の設計の考慮事項

管理可能アプリケーションを設計する場合には、Oracleのベスト・プラクティスに加えて、以下の考慮事項にも留意してください。

JVMプラットフォームMBeanサーバーへのMBeanの登録

WebLogic Serverのこのリリースは、WebLogic実行時MBeanサーバーはJVMのプラットフォームMBeanサーバーです。したがって、JMXクライアントは1つのMBeanサーバーを介して、カスタムMBean、WebLogic Server MBean、およびJVMのプラットフォームMXBeanをモニターすることができます。その場合、次のことに留意してください。

- ローカル・アプリケーションは、java.lang.management.ManagementFactory.getPlatformMBeanServer()が返すMBeanServerインタフェースを介してすべてのMBeanにアクセスできます。

- リモートJMXクライアントがカスタムMBean、プラットフォームMXBean、およびWebLogic Server MBeanにアクセスできるようにする場合、次の構成を検討してください。

- デフォルトでは、WebLogic Server実行時MBeanサーバーはプラットフォームMBeanサーバーとして構成されます。

- プラットフォームMBeanサーバーへのリモート・アクセスを有効にしません。

- リモートJMXクライアントは、実行時MBeanサーバーに接続することによってプラットフォームMXBeanにアクセスします。

詳細は、『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』のプラットフォームMBeanサーバーの使用に関する項を参照してください。

JDKクラスのみを使用したアプリケーションMBeanの登録

MBeanがその親アプリケーションのライフサイクルを共有するようにするための最も簡単な方法は、OracleのApplicationLifecycleListenerを使用することです。独自のWebLogic Serverクラスとデプロイメント記述子要素を使用せずにサーブレットまたはEJBを管理する場合、以下のことを実行します。

- サーブレットの場合、サーブレットが特定のメソッドを呼び出すとき、またはサーブレット自身がインスタンス化されるときにMBeanを作成および登録するjavax.servlet.Filterを構成します。http://download.oracle.com/javaee/5/api/javax/servlet/Filter.htmlにあるJava EE 5.0 API仕様の「Filter」を参照してください。

- EJBの場合、MBeanを作成および登録するためのjavax.ejb.EntityBean.ejbActivate()メソッドを実装します。そのインスタンスが単一のMBeanインスタンスを共有するセッションEJBの場合、存在しない場合にのみMBeanを作成および登録するロジックを組み込みます。http://download.oracle.com/javaee/5/api/javax/ejb/EntityBean.htmlにあるJava EE 5.0 API仕様の「EntityBean」を参照してください。

管理対象オブジェクトとビジネス・オブジェクトの構成

ビジネス・オブジェクトごとに1つの管理対象オブジェクトを設計する場合、管理オブジェクトとビジネス・オブジェクトの関係についての要件は存在しません。1つの管理オブジェクトが複数のビジネス・オブジェクトからの情報を集約することも、反対に1つのビジネス・オブジェクトからの情報を複数の管理対象オブジェクトに分割することもできます。

たとえば、サーブレットが複数のヘルパー・クラスを使用し、1つのMBeanでサーブレットを表す場合、各ヘルパー・クラスはその管理データを1つのMBean実装クラスにプッシュする必要があります。

選択する構成は、複雑な管理アーキテクチャの維持の難しさとは対照的に、システム管理者または運用スタッフに提供するMBeanの数によって決まります。

管理クラスのパッケージ化と管理クラスへのアクセス

管理クラスをアプリケーションのAPP-INFディレクトリにパッケージ化した場合、アプリケーションの他のすべてのクラスがそれらにアクセスできます。管理クラスをモジュールのアーカイブ・ファイルにパッケージ化した場合、それらにアクセスできるのはモジュールだけです。

たとえば、あるアプリケーションに複数のWebアプリケーションが含まれており、それぞれにEJB1というセッションEJBのコピーが存在するとします。1つのMBeanですべてのアプリケーションのセッションEJBのコピーに関する情報を収集する場合、MBeanのクラスをAPP-INFディレクトリにパッケージ化する必要があります。WebアプリケーションのEJBのコピーがそれぞれMBeanのコピーを保持するように設定する場合、MBeanのクラスをEJBのJARファイルにパッケージ化します。(クラスをEJBのJARにパッケージ化した場合、JARをWebアプリケーションにコピーするときにMBeanクラスを各Webアプリケーションに配布します。)

ロールおよびポリシーによるカスタムMBeanの保護

MBeanをWebLogic Server実行時MBeanサーバーに登録する場合、アクセスは、WebLogic Serverセキュリティ・フレームワークを使用して認証および認可されたユーザーのみに制限するだけでなく、ロールおよびポリシーを作成することによってさらに制限できます。セキュリティ・グループなどのセキュリティロールによって、ユーザーにIDが付与されます。ただしグループとは違い、ロールのメンバーシップは実行時に評価される条件群に基づいて動作できます。セキュリティポリシーは、リソースにアクセス可能なユーザー、グループ、またはロールを指定する、別の一連の実行時条件です。

ロールおよびポリシーを使ったカスタムMBeanの保護には、次の制約があります。

- MBeanのオブジェクト名に「Type=value」キー・プロパティが含まれている必要があります。

- ロールおよびポリシーをXACML 2.0ドキュメントに記述し、WebLogic Scripting Toolを使用してそのデータをレルムに追加する必要があります。

- XACMLドキュメントで認可ポリシーを記述する場合、セキュリティ・レルムでは、WebLogic Server XACML認可プロバイダ、またはweblogic.management.security.authorization.PolicyStoreMBeanインタフェースを実装する別の特定のプロバイダを使用する必要があります。

- XACMLドキュメントでロールの割当てを記述する場合、セキュリティ・レルムでは、WebLogic Server XACMLロール・マッピング・プロバイダ、またはweblogic.management.security.authorization.PolicyStoreMBeanインタフェースを実装する別の特定のプロバイダを使用する必要があります。

XACMLロールおよびポリシーの作成とレルムへの追加の詳細は、『Oracle WebLogic Serverロールおよびポリシーによるリソースの保護』のXACMLドキュメントによるWebLogicリソースの保護に関する項を参照してください。

4 カスタムMBeanのインストゥルメントと登録

以下の節では、アプリケーション・モジュール用の標準MBeanをインストゥルメントおよび登録する方法について説明します。

- MBean開発プロセスの概要

- 管理インタフェースの作成と実装

- ビジネス・メソッドの修正によるデータのプッシュ

- MBeanの登録

- アプリケーションとMBeanクラスのパッケージ化

MBean開発プロセスの概要

図4-1に、MBean開発プロセスを示します。プロセスの手順、および各手順の結果については、「表4-1」を参照してください。以下の節では、各手順について詳しく説明します。

図4-1 標準MBean開発の概要

表4-1 モデルMBeanの開発タスクと結果

手順

説明

結果

1. 管理インタフェースの作成と実装

JMXクライアントに公開するプロパティ(管理属性)と操作を記述する標準Javaインタフェースを作成します。

インタフェースを実装するJavaクラスを作成します。管理ロジックはビジネス・ロジックから分離する必要があるため、実装はビジネス・メソッドを持つクラスに配置しないでください。

管理インタフェースを記述および実装するソース・ファイル。

2. ビジネス・メソッドの修正によるデータのプッシュ

ビジネス・メソッドが呼び出された回数に関するデータが管理属性に含まれている場合、または、管理属性にビジネス・プロパティと同じ値を格納する場合、ビジネス・メソッドが管理実装クラスにデータをプッシュ(更新)するように修正します。

たとえば、ビジネス・クラスがデータベースに書き込む頻度を追跡する場合、データベースの書込みを処理するビジネス・メソッドが同時に管理実装クラスのカウンタ・プロパティをインクリメントするように修正します。この設計パターンを使用すると、ビジネス・コードに挿入する管理コードを最小限に抑えることができます。

ビジネス・ロジックと管理ロジックの明確な分離。

3. MBeanの登録

MBeanをアプリケーション・デプロイメントの一部としてインスタンス化する場合、WebLogic Server ApplicationLifecycleListenerクラスを作成し、MBeanを登録します。

Javaクラスとweblogic-application.xmlの追加エントリ。

4. アプリケーションとMBeanクラスのパッケージ化

コンパイル済みのクラスを1つのアーカイブにパッケージ化します。

JAR、WAR、EARファイルまたはデプロイ可能なアーカイブ・ファイル。

管理インタフェースの作成と実装

標準MBean設計パターンの主要なメリットの1つは、管理プロパティ(属性)の定義と実装をJavaプロパティの場合と同じ方法で( getxxx、setxxx、およびisxxxメソッドを使用して)行うことです。同様に、管理メソッド(操作)の定義と実装もJavaメソッドの場合と同じように行います。

MBeanを登録した場合、MBeanサーバーはMBeanインタフェースを調べて、データをJMXクライアントに提示する方法を決定します。次に、JMXクライアントはMBeanServerConnection.getAttribute()およびsetAttribute()メソッドを使用してMBeanの値を取得および設定し、MBeanServerConnection.invoke()を使用してその操作を呼び出します。http://download.oracle.com/javase/6/docs/api/javax/management/MBeanServerConnection.htmlにあるJava SE 6.0 API仕様の「MBeanServerConnection」を参照してください。

標準MBeanのインタフェースを作成するには:

1. インタフェースをパブリックとして宣言します。

2. インタフェースには次の名前を付けることをお薦めします。

Business-objectMBean.java

Business-objectは管理対象のオブジェクトです。

標準MBeanの推奨設計パターンを使用すると、どのような命名規則にも従うことができます。それ以外の標準MBean設計パターン(MBeanの実装ファイルがjavax.management.StandardMBeanの拡張ではないパターン)では、ファイル名はImpl-fileMBean.javaというパターンに従う必要があります(Impl-fileはMBeanの実装ファイルの名前です)。

3. MBeanで提供する読み書き属性ごとに、次の命名パターンに従ってゲッターおよびセッター・メソッドを定義します。
getAttribute-name

setAttribute-name

Attribute-nameは、JMXクライアントに公開する名前です(大文字と小文字は区別されます)。

各自のコーディング規約により、Boolean型の属性のゲッター・メソッドとしてisAttribute-nameを使用することもできます。しかし、JMXクライアントは属性のデータ型に関係なくMBeanServerConnection.getAttribute()メソッドでその値を取得します。MBeanServerConnection.isAttribute()というメソッドは存在しません。

4. 提供する読取り専用属性ごとに、is またはgetterメソッドのみを定義します。
書込み専用属性ごとに、セッター・メソッドを定義します。

5. JMXクライアントに公開する各管理操作を定義します。

例4-1は、int型の読取り専用属性と、JMXクライアントがその属性値を0に設定するために使用する操作を定義するMBeanインタフェースです。

例4-1 管理インタフェース

package com.bea.medrec.controller;
public interface RecordSessionEJBMBean {
public int getTotalRx();
public void resetTotalRx();
}

このインタフェースを実装するには:

1. パブリック・クラスを作成します。
実装ファイルの命名規則として、MBean-InterfaceImpl.javaというパターンを使用することをお薦めします。

2. javax.management.StandardMBeanを拡張して、このパターンが命名要件を満たすようにします。
http://download.oracle.com/javase/6/docs/api/javax/management/StandardMBean.htmlにあるJava SE 6.0 API仕様の「StandardMBean」を参照してください。

3. StandardMBean(Object implementation, Class mbeanInterface)コンストラクタを実装します。
管理ロジックを委託クラスに分離する推奨設計パターンでは、StandardMBean(Object implementation, Class mbeanInterface)コンストラクタを実装するパブリック・コンストラクタを提供する必要があります。

4. 管理インタフェースで定義したメソッドを実装します。
以下のガイドラインに従ってください。

- ビジネス・オブジェクトが管理データを管理オブジェクトにプッシュする推奨設計パターンでは、ビジネス・メソッドが管理属性の値を設定するために使用するメソッドをこの実装クラスに組み込みます。例4-2では、incrementTotalRx()メソッドはビジネス・メソッドで使用できますが、管理インタフェースの一部ではありません。

- EJB、サーブレット、またはその他のクラスの複数のインスタンスが管理属性の値を設定できる場合、プロパティが個別にインクリメントされるようにし、またそのゲッターおよびセッター・メソッド(またはインクリメント・メソッド)が同期されないようにしてください。同期化によって管理データの正確さは保証されますが、管理操作が完了するまでビジネス・スレッドがブロックされます。

例4-2 MBeanの実装

package com.bea.medrec.controller;

import javax.management.StandardMBean;
import com.bea.medrec.controller.RecordSessionEJBMBean;
public class RecordSessionEJBMBeanImpl extends StandardMBean
implements RecordSessionEJBMBean {

public RecordSessionEJBMBeanImpl() throws
javax.management.NotCompliantMBeanException {
super(RecordSessionEJBMBean.class);
}

public int TotalRx = 0;
public int getTotalRx() {
return TotalRx;
}
public void incrementTotalRx() {
TotalRx++;
}
public void resetTotalRx() {
TotalRx = 0;
}
}

ビジネス・メソッドの修正によるデータのプッシュ

ビジネス・メソッドが呼び出された回数に関するデータが管理属性に含まれている場合、または、管理属性にビジネス・プロパティと同じ値を格納する場合、ビジネス・メソッドが管理実装クラスにデータをプッシュ(更新)するように修正します。

例4-3に、メソッドの呼出しごとにTotalRxプロパティの整数値を増分するEJBのメソッドを示します。

例4-3 管理属性を増分するEJBメソッド

private Collection addRxs(Collection rXs, RecordLocal recordLocal)
throws CreateException, Exception {
...
com.bea.medrec.controller.RecordSessionEJBMBeanImpl.incrementTotalRx();
...
}

MBeanの登録

MBeanをアプリケーション・デプロイメントの一部としてインスタンス化する場合は、アプリケーションのデプロイ時にMBeanを登録するApplicationLifecycleListenerを作成します(「ApplicationLifecycleListenerを使用したアプリケーションMBeanの登録」を参照)。

1. weblogic.application.ApplicationLifecycleListenerの拡張クラスを作成します。

2. このApplicationLifecycleListenerクラスに、ApplicationLifecycleListener.postStart(ApplicationLifecycleEvent evt)メソッドを実装します。
このメソッドの実装で以下を行います。

1. MBeanのオブジェクト名を定義します。
以下の命名規則を使用することをお薦めします。

your.company:Name=Parent-module,Type=MBean-interface-classname

親モジュールの名前を取得するために、ApplicationLifecycleEventを使用してApplicationContextオブジェクトを取得します。次に、ApplicationContextを使用してモジュールのIDを取得します。

2. MBeanがWebLogic Server実行時MBeanサーバーに登録する場合は、次の操作を行います。
JNDIを介してWebLogic Server実行時MBeanサーバーにアクセスします。

JMXクライアントのクラスがEJBやWebアプリケーションなどのJava EEモジュールの一部である場合、実行時MBeanサーバーのJNDI名は次のようになります。

java:comp/env/jmx/runtime

例:

InitialContext ctx = new InitialContext();
MBeanServer server = (MBeanServer)
ctx.lookup("java:comp/env/jmx/runtime");

JMXクライアントのクラスがJava EEモジュールの一部ではない場合、実行時MBeanサーバーのJNDI名は次のようになります。

java:comp/jmx/runtime

『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』の実行時MBeanサーバーへのローカル接続に関する項を参照してください。

3. MBeanが ドメイン実行時MBeanサーバーに登録されている場合は、次の操作を行います。
JNDIを介して ドメイン 実行時MBeanサーバーにアクセスします。

JMXクライアントのクラスがEJBやWebアプリケーションなどのJava EEモジュールの一部である場合、ドメイン実行時MBeanサーバーのJNDI名は次のようになります。

java:comp/env/jmx/domainRuntime

例:

Initial context ctx = new InitialContext();
server = (MBeanServer)ctx.lookup("java:comp/env/jmx/domainRuntime");

JMXクライアントのクラスがJava EEモジュールの一部ではない場合、ドメイン実行時MBeanサーバーのJNDI名は次のようになります。

java:comp/jmx/domainRuntime

注意:
ドメイン実行時MBeanサーバーは管理サーバーにのみ存在します。ctx.lookup()コールは、 ローカルMBeanサーバーに参照を返すので、lookupメソッドは管理サーバーで実行する場合にのみ呼び出します。管理対象サーバーで実行するとき、このメソッドを呼び出すと、NameNotFound例外が送出されます。

『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』のドメインの実行時MBeanサーバーへのローカル接続に関する項を参照してください。

4. MBeanServer.registerMBean(Object object, ObjectName name)を使用してMBeanを登録します。ここで、
objectはMBean実装クラスのインスタンスです。

nameはMBeanのJMXオブジェクト名です。

アプリケーションがデプロイされるときに、WebLogicデプロイメント・サービスは登録されているすべてのリスナーに対してApplicationLifecycleEvent通知を送信します。リスナーは、postStart通知を受信するとそのpostStartメソッドを呼び出します。『Oracle WebLogic Serverアプリケーションの開発』のアプリケーション・ライフサイクル・イベントのプログラミングに関する項を参照してください。

3. 同じクラスに、ApplicationLifecycleListener.preStop(ApplicationLifecycleEvent evt)メソッドを実装します。
このメソッドの実装では、

MBeanの登録を解除するためには、javax.management.MBeanServer.unregister(ObjectName MBean-name)メソッドを呼び出します。

4. 次の要素をアプリケーションのweblogic-application.xmlファイルに追加することによって、クラスをApplicationLifecycleListenerとして登録します。

<listener>
<listener-class>
fully-qualified-class-name
</listener-class>
</listener>

この方法の例については、MedRecサンプル・サーバーを参照してください。

アプリケーションとMBeanクラスのパッケージ化

MBeanへのアクセスをどのように実現するかに応じて、アプリケーションのAPP-INFディレクトリか、モジュールのJAR、WAR、または他のタイプのアーカイブ・ファイルにMBeanクラスをパッケージ化します。「その他の設計の考慮事項」を参照してください。

5 WebLogic Server JMXタイマー・サービスの使用

以下の節では、WebLogic Server JMXタイマー・サービスの使い方を説明します。

- WebLogic Server JMXタイマー・サービスの概要

- タイマー・サービスの作成:主な手順

- 通知を送信するようにTimer MBeanを構成する

- Dateオブジェクトの作成

- 例:通知を午前9時から5分ごとに生成する

- 通知の削除

WebLogic Server JMXタイマー・サービスの概要

JMXクライアントが指定された時刻または一定期間ごとにタスクを実行する必要がある場合、通知を送信するようにJMXタイマー・サービスを構成したり、指定されたアクションで通知に応答するリスナーを構成したりできます。

たとえば、JMXモニターを毎日午前9時から午後9時まで実行する必要があるとします。この場合、毎日午前9時に通知を送信するようにJMXタイマー・サービスを構成することによって、JMXリスナーからモニターを起動できます。タイマー・サービスで午後9時に別の通知を送信し、その通知によってリスナーからモニターMBeanを停止できます。

JDKには、JMXタイマー・サービスの実装(http://download.oracle.com/javase/6/docs/api/javax/management/timer/Timer.htmlでJava SE 6.0 API仕様の「javax.management.timer.Timer」を参照)が組み込まれていますが、このタイマー・サービスのリスナーは、サーバーのJVM内の独自のスレッドで動作します。

WebLogic Serverには、標準のタイマー・サービスの拡張が組み込まれています。これにより、タイマー・リスナーはWebLogic Serverが管理するスレッドおよびWebLogic Serverユーザー・アカウントのセキュリティ・コンテキストの中で実行されます。

タイマー・サービスの作成:主な手順

各JMXクライアントに対して、タイマー・サービスのインスタンスを構築および管理します。WebLogic ServerにはすべてのJMXクライアントが使用する集中型タイマー・サービスは用意されていません。サーバー・インスタンスが再起動するたびに、各JMXクライアントは必要なタイマー・サービスの構成を再インスタンス化する必要があります。

WebLogic Serverタイマー・サービスを作成するには、次の手順に従います。

1. アプリケーションにJMXリスナー・クラスを作成します。
JMXリスナーの作成については、『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』の通知リスナーの作成に関する項を参照してください。

2. 以下のことを行うクラスを作成します。

1. weblogic.management.timer.TimerMBeanのインスタンスを構成して、指定の時間または間隔でjavax.management.timer.TimerNotification通知を送信するようにします。http://download.oracle.com/javase/6/docs/api/javax/management/timer/TimerNotification.htmlにあるJava SE 6.0 API仕様の「TimerNotification」を参照してください。
構成する通知ごとに、タイマーによる通知の送信を引き起こすイベントを識別するStringをType属性に組み込みます。

「通知を送信するようにタイマーMBeanを構成する」を参照してください。

2. 構成したタイマーMBeanにリスナーとフィルタ(任意)を登録します。

3. 構成したタイマーMBeanでタイマーを起動します。
全般的な手順については、『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』の通知フィルタの構成に関する項および通知リスナーとフィルタの登録に関する項を参照してください。

4. タイマー・サービスの使用後にタイマーMBeanの登録を解除し、MBeanサーバーとの接続を閉じます。

3. リスナーとその他のJMXクラスをパッケージ化し、WebLogic Serverにデプロイします。『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』のリスナーのパッケージ化とWebLogic Serverへのデプロイに関する項を参照してください。

通知を送信するようにタイマーMBeanを構成する

Timer MBeanインスタンスが通知を送信するように構成するには、次の手順に従います。

1. ドメイン実行時MBeanサーバーへの接続を初期化します。
『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』のMBeanサーバーへのリモート接続に関する項を参照してください。

2. タイマーMBeanインスタンスのObjectNameを作成します。
http://download.oracle.com/javase/6/docs/api/javax/management/ObjectName.htmlにあるJava SE 6.0 API仕様の「javax.management.ObjectName」を参照してください。

オブジェクト名は組織名で開始し、その名前の中にタイマーMBeanインスタンスの目的を明確に特定する主要プロパティを含めることをお薦めします。

たとえば、"mycompany:Name=myDailyTimer,Type=weblogicTimer"というように指定します。

3. タイマーMBeanを作成および登録します。
javax.management.MBeanServerConnection.createMBean(String classname ObjectName name)メソッドを使用します。ここで、

- classnameはweblogic.management.timer.Timer

- nameはタイマーMBeanインスタンスのオブジェクト名です。

注意:
作成するタイマーMBeanは、WebLogic ServerのJMXエージェントで動作します(リモートJMXクライアントからタイマーMBeanを作成した場合はクライアントJVMで動作しません)。

4. 通知を送信するようにタイマーMBeanを構成します。
MBeanのaddNotification操作を呼び出します。表5-1に、addNotification操作の各パラメータの説明を示します。詳細は、WebLogic Server API リファレンスの「weblogic.management.timer.Timer」を参照してください。

addNotification操作はTimerNotificationオブジェクトを作成し、そのTimerNotificationオブジェクトを一意に識別する整数が含まれるInteger型のhandbackオブジェクトを返します。

5. JMXクライアントが受信する必要があるタイマー通知ごとに手順4を繰り返します。

6. タイマーMBeanのstart()操作を呼び出して、そのタイマーを起動します。

指定した時刻になると、タイマー・サービスはTimerNotificationオブジェクトをhandbackオブジェクトの参照と一緒に送信します。

表5-1 addNotification操作のパラメータ

パラメータ

説明

java.lang.String type

この通知のブロードキャストをトリガーするイベントを識別するための文字列。たとえば、毎日午前0時にブロードキャストされるように構成する通知にはmidnightを指定できます。

java.lang.String message

TimerNotificationオブジェクトのmessage属性の値を指定します。

java.lang.Object userData

リスナーに送信する必要のあるすべてのデータが格納されたオブジェクトの名前を指定します。通常は、通知を登録したクラス(コールバックとして機能)の参照を指定します。

java.util.Date startTime

タイマーが通知を送信する日時が格納されたDateオブジェクトを指定します。

「Dateオブジェクトの作成」を参照してください。

long period

(オプション)通知の間隔をミリ秒単位で指定します。このパラメータをゼロにするか、定義しない場合(null)、反復的な通知は無効です。

long nbOccurences

(オプション)通知が行われる回数を指定します。このパラメータの値をゼロにするか、定義しない(null)場合で、期間がゼロまたはnullでない場合、通知は無限に繰り返されます。

このパラメータを指定すると、タイマーMBeanが関連する通知を送信するたびに、発生数が1ずつデクリメントされます。タイマーMBeanのgetNbOccurrences操作を使用すると、残りの回数を確認できます。発生数がゼロになると、タイマーMBeanによって、構成されている通知のリストからその通知が削除されます。

Dateオブジェクトの作成

java.util.Dateオブジェクトのコンストラクタは、そのオブジェクトを初期化して、Dateオブジェクトの作成時間(最も近いミリ秒)を格納します。異なる日時を指定するには:

1. java.util.Calendarのインスタンスを作成します。

2. Calendarオブジェクトが時刻または日付を表すように構成します。

3. CalendarオブジェクトのgetTime()メソッドを呼び出します。このメソッドは、Calendarオブジェクトの時刻を表すDateオブジェクトを返します。

たとえば、次のコードでは、午前0時を表すDateオブジェクトが構成されます。

java.util.Calendar cal = java.util.Calendar.getInstance();
cal.set(java.util.Calendar.HOUR_OF_DAY, 24);
java.util.Date morning = cal.getTime();

http://download.oracle.com/javase/6/docs/api/java/util/Calendar.htmlにあるJava SE 6.0 API仕様の「java.util.Calendar」を参照してください。

例:通知を午前9時から5分ごとに生成する

例5-1のコードでは、午前9時から5分ごとに通知を送信するweblogic.management.timer.Timerのインスタンスが作成されます。

コードに関する以下の点に留意してください。

- このコードでは、複数のサーバー・インスタンスにデプロイされているアプリケーションと一緒にJMXクライアントが動作することを前提として、タイマーMBeanがWebLogic Server実行時MBeanサーバーに作成および登録されます。この場合、JMXクライアントはタイマーMBeanをドメイン内の各実行時MBeanサーバーに登録します。

- WebLogic ServerタイマーMBeanのインスタンスは作成されますが、このクラスはWebLogic Serverクラスをインポートしません。WebLogic Server Timerクラスへのアクセスが必要なのはJMXクライアントではなく、MBeanサーバーだけです。

- すべてのタイマー通知はjavax.management.Notificationの拡張であるため、汎用のJMXリスナーを使用してタイマー通知をリスニングできます。

例5-1 タイマーMBeanの作成、登録、構成

import java.util.Hashtable;
import java.io.IOException;
import java.net.MalformedURLException;

import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.MalformedObjectNameException;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import javax.naming.Context;

import javax.management.NotificationFilterSupport;

public class RegisterTimer  {
private static MBeanServerConnection connection;
private static JMXConnector connector;
private static final ObjectName service;

// Initialize the object name for RuntimeServiceMBean
// so it can be used throughout the class.
static {
try {
service = new ObjectName(
"com.bea:Name=RuntimeService,Type=weblogic.management.mbeanservers.ru
ntime.RuntimeServiceMBean");
}catch (MalformedObjectNameException e) {
throw new AssertionError(e.getMessage());
}
}

/*
* Initialize connection to the Runtime MBean Server.
* This MBean is the root of the runtime MBean hierarchy, and
* each server in the domain hosts its own instance.
*/
public static void initConnection(String hostname, String portString,
String username, String password) throws IOException,
MalformedURLException {
String protocol = "t3";
Integer portInteger = Integer.valueOf(portString);
int port = portInteger.intValue();
String jndiroot = "/jndi/";
String mserver = "weblogic.management.mbeanservers.runtime";
JMXServiceURL serviceURL = new JMXServiceURL(protocol, hostname, port,
jndiroot + mserver);

Hashtable h = new Hashtable();
h.put(Context.SECURITY_PRINCIPAL, username);
h.put(Context.SECURITY_CREDENTIALS, password);
h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES,
"weblogic.management.remote");
connector = JMXConnectorFactory.connect(serviceURL, h);
connection = connector.getMBeanServerConnection();
}

public static void main(String[] args) throws Exception {
String hostname = args[0];
String portString = args[1];
String username = args[2];
String password = args[3];

try {
/* Invokes a custom method that establishes a connection to the
* Runtime MBean Server and uses an instance of
* MBeanServerConnection to represents the connection. The custom
* method assigns the MBeanServerConnection to a class-wide, static
* variable named "connection".
*/
initConnection(hostname, portString, username, password);

//Creates and registers the timer MBean.
ObjectName timerON = new
ObjectName("mycompany:Name=myDailyTimer,Type=weblogicTimer");
String classname = "weblogic.management.timer.Timer";
connection.createMBean(classname, timerON);
System.out.println("===> created timer mbean "+timerON);

// Configures the timer MBean to emit a morning notification.
// Assigns the return value of addNotification to a variable so that
// it will be possible to invoke other operations for this specific
// notification.
java.util.Calendar cal = java.util.Calendar.getInstance();
cal.set(java.util.Calendar.HOUR_OF_DAY, 9);
java.util.Date morning = cal.getTime();
String myData = "Timer notification";
Integer morningTimerID = (Integer) connection.invoke(timerON,
"addNotification",
new Object[] { "mycompany.timer.notification.after9am" ,
"After 9am!", myData, morning, new Long(300000) },
new String[] {"java.lang.String", "java.lang.String",
"java.lang.Object", "java.util.Date", "long" });

//Instantiates your listener class and configures a filter to
// forward only timer messages.
MyListener listener = new MyListener();
NotificationFilterSupport filter = new NotificationFilterSupport();
filter.enableType("mycompany.timer");

//Uses the MBean server's addNotificationListener method to
//register the listener and filter with the timer MBean.
System.out.println("===> ADD NOTIFICATION LISTENER TO "+ timerON);
connection.addNotificationListener(timerON, listener, filter, null);
System.out.println("\n[myListener]: Listener registered ...");

//Starts the timer.
connection.invoke(timerON, "start", new Object[] { }, new String[] {});

//Keeps the remote client active.
System.out.println("Pausing. Press Return to end...........");
System.in.read();
} catch(Exception e) {
System.out.println("Exception: " + e);
e.printStackTrace();
}
}
}

通知の削除

タイマーMBeanは、次のいずれかの場合にリストから通知を削除します。

- 反復されない通知が送信された場合

- 反復的な通知が指定された回数分送信された場合

タイマーMBeanは、通知を削除する以下の操作も提供します。

- removeAllNotifications(): タイマーMBeanインスタンスに登録されているすべての通知を削除します。

- removeNotification(java.lang.Integer id): handbackオブジェクトに指定する整数値が含まれる通知を削除します。addNotificationメソッドは、呼び出された場合に、このhandbackオブジェクトを返します(「通知を送信するようにタイマーMBeanを構成する」手順4を参照)。

- removeNotifications(java.lang.String type): タイプが指定のタイプと対応するすべての通知を削除します。通知のタイプ値は、通知オブジェクトの作成時に定義します。表5-1を参照してください。

詳細は、WebLogic Server API リファレンスの「weblogic.management.timer.Timer」を参照してください。

6 カスタムMBeanへのアクセス

JMXプログラミングによるカスタムMBeanへのアクセスの他に、JMX準拠の管理システムを使用してMBeanにアクセスすることもできます。詳細は、Oracle Technology Network Webサイト(http://www.oracle.com/technetwork/java/javase/tech/javamanagement-140525.html)を参照してください。JMXに関する書籍、ホワイトペーパー、および詳細情報へのリンクが掲載されています。

以下の節では、カスタムMBeanにアクセスするその他の方法について説明します。

- JConsoleからカスタムMBeanへのアクセス

- WebLogic Scripting ToolからカスタムMBeanへのアクセス

- 管理コンソール拡張からカスタムMBeanへのアクセス

JConsoleからカスタムMBeanへのアクセス

JDKには、MBeanを参照するために使用できるSwingベースのJMXクライアント、JConsoleが用意されています。任意のWebLogic Server MBeanサーバーとJVMプラットフォームMBeanサーバーのMBeanを参照できます。Oracleでは、JConsoleはリソースを大量に消費するため、開発環境のみで使用するよう推奨しています。http://www.oracle.com/technetwork/articles/java/jconsole-1564139.htmlのJConsoleを使用したアプリケーションの監視を参照してください。

JConsoleからカスタムMBeanにアクセスするには:

1. JConsoleクラスパスにwljmxclient.jarとwlclient.jarが存在しない場合:

1. MBeanをホストするWebLogic ServerインスタンスのIIOPプロトコルを有効にします。

2. 管理者権限を持つWebLogic Serverユーザーになるように、デフォルトのIIOPユーザーを構成します。その場合、手順 5dまたは手順 6dで提供したログイン名とパスワードは無関係であり、デフォルトのIIOPユーザーは各リクエストに関連付けられます。

管理コンソール・オンライン・ヘルプの「IIOPの有効化と構成」を参照してください。

wljmxclient.jarとwlclient.jar ファイルが JConsoleクラスパスに指定されている場合は、デフォルトのIIOPユーザーを有効化する必要はありません。手順2に進みます。

注意:
wlclient.jarがMANIFEST ClassPathエントリのwljmxclient.jarに含まれているので、wlclient.jarとwljmxclient.jarが同じディレクトリであるか、または両方のjarがクラスパスに指定されている必要があります。
クラスパスにwljmxclient.jarがある場合、weblogic.jarまたはwlfullclient.jarは、クラスパスに含まれていないことを確認してください。wljmxclient.jar / wlclient.jarのシン・クライアントまたはwlfullclient.jarのシック・クライアントのみを使用する必要があります。両方のjarを組み合せての使用はできません。

2. コマンド・プロンプトから、JDK 6または同等のものがパスに存在することを確認します。

3. コマンド・プロンプトで、次のコマンドを入力します:

jconsole -J-Djava.class.path=$JAVA_HOME/lib/jconsole.jar:$JAVA_HOME/
lib/tools.jar:$WLS_HOME/lib/wljmxclient.jar
-J-Djmx.remote.protocol.provider.pkgs=weblogic.management.remote

注意:
手順4で説明されているような構成がある場合、jconsoleコマンドを実行してJConsoleを起動することができます。この方法でJConsoleを起動する場合、WLSプロセスを開始するユーザーのみが、ローカルに接続することができます。

4. カスタムMBeanがJVMプラットフォームMBeanサーバーに登録されている場合(またはWebLogic Server実行時MBeanサーバーをJVMプラットフォームMBeanサーバーとして構成した場合)、次の操作を行います。

1. JConsoleウィンドウで、「接続」>「新規接続」を選択します。

2. 「新規接続」ウィンドウで、「ローカル・プロセス」タブを選択して、WebLogic.Serverを選択し、「接続」をクリックします。

5. カスタムMBeanがWebLogic Server実行時MBeanサーバーに登録されており、実行時MBeanサーバーをプラットフォームMBeanサーバーとして構成していない場合は、次の操作を行います。

1. JConsoleウィンドウで、「接続」>「新規接続」を選択します。

2. 「新規接続」ウィンドウで、「リモート・プロセス」オプションを選択します。

3. 「リモート・プロセスJMX URL」テキストボックスに、以下のURLを入力します。

service:jmx:rmi:///jndi/iiop://host:port/weblogic.management.mbeanservers.runtime

ここでhost:portは、MBeanをホストするWebLogic Serverインスタンスのホスト名とポートです。

例:

service:jmx:rmi:///jndi/iiop://localhost:7001/weblogic.management.mbeanservers.runtime

4. ユーザー名とパスワード・フィールドに、管理ロールが割り当てられているユーザー・アカウントのユーザー名とパスワードを入力します。このログインは、クライアントを認証するために使用され、クライアントから出て来た各JMXリクエストに関連付けられたサブジェクトを作成できます。

5. 「接続」をクリックします。

6. カスタムMBeanがWebLogic Serverドメイン実行時MBeanサーバーに登録されている場合、次の操作を行います。

1. 「コンソール」ウィンドウで、「接続」>「新規接続」を選択します。

2. 「新規接続」ウィンドウで、「リモート・プロセス」オプションを選択します。

3. 「リモート・プロセスJMX URL」テキストボックスに、以下のURLを入力します。

service:jmx:rmi:///jndi/iiop://host:port/weblogic.management.mbeanservers.domainRuntime

ここでhost:portは、管理サーバーのホスト名とポートです。

例:

service:jmx:rmi///jndi/iiop://localhost:9002/weblogic.management.mbeanservers.domainRuntime

4. ユーザー名とパスワード・フィールドに、管理ロールが割り当てられているユーザー・アカウントのユーザー名とパスワードを入力します。このログインは、クライアントを認証するために使用され、クライアントから出て来た各JMXリクエストに関連付けられたサブジェクトを作成できます。

5. 「接続」をクリックします。

WebLogic Scripting ToolからカスタムMBeanへのアクセス

MBeanを、実行時MBeanサーバーまたはドメイン実行時MBeanサーバーに登録した場合、WebLogic Scripting Toolを使用してカスタムMBeanにアクセスできます。詳細は、『Oracle WebLogic Scripting Tool』のほかのWebLogic MBeansおよびカスタムMBeansへのアクセスに関する項を参照してください。

管理コンソール拡張からカスタムMBeanへのアクセス

特定のテンプレートに準拠するJava Server Pages (JSP)を作成することによって、WebLogic Server管理コンソールを拡張できます。作成するJSPには、JVMプラットフォームMBeanサーバー、WebLogic Server実行時MBeanサーバーまたはドメイン実行時MBeanサーバーに接続してMBeanを検索するJMXコードを組み込むことができます。

詳細は、『Oracle WebLogic Server管理コンソールの拡張』を参照してください。

オラクル社の法律上の注意点について

コピーライトについて

Copyright © 1994-2015, Oracle and/or its affiliates.All rights reserved.

商標と登録商標について

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

制限付権利

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション（人的傷害を発生させる可能性があるアプリケーションを含む）への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性（redundancy）、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

ドラフトのアルファ版およびベータ版ドキュメントについて

このドキュメントが試作版の場合:

このドキュメントは試作版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。オラクル社およびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。