JMXは、アプリケーションリソースを管理するための新しいJava標準です。SNMP(Simple Network Management Protocol)やWBEM(Web-Based Enterprise Management)といった既存のソリューションと連携し、すべての新しいJ2EE管理インターフェース間の標準を維持するように設計されています。JMXにより、Java開発者は、ログファイルやコマンドラインではなく、何らかの管理インターフェースを通じてアプリケーションを保守する方法を構築できます。
O'Reillyの『Java Management Extensions』に出会う前は、JMXを使ってJBossアプリケーションサーバーの監視コンポーネントを構築していました。最もシンプルなJMX BeanであるManaged Bean(MBean)を作成し、サーバーにプラグインしていました。その後、Webページにアクセスすることで、システム内のMBeanサービスの一覧を確認でき、起動、停止、変更も可能になりました。これにより、カスタムサーバーに現在接続しているユーザー数の確認や、ハングしたスレッドの再起動も非常に簡単に行えました。しかし、J2EEソリューションで使用しているフレームワークの背後で何が起こっているのかを少しでも理解したかったのです。まさにそれが、この本から得られるものと期待していたのです。しかし、ご覧の通り、少しがっかりしました。図Aは、私の感想を簡単にまとめたものです。
図A
![]() |
J. スティーブン・ペリー著 ISBN: 0-596-00245-9 長所: 導入では、JMX の世界の概要が簡潔に説明されており、 JMX仕様の詳細な説明以上のものはありません。 |
Java Management Extensions は期待外れでした。
本書は2つのセクションに分かれており、JMX機能の各レベルについてそれぞれ1つずつ説明しています。最初のセクションでは、JMX対応アプリケーションを作成するために拡張できる様々なタイプのMBeanを含むインストルメントレベルについて説明します。2番目のセクションでは、MBeanが配置され機能する環境を説明するエージェントレベルについて説明します。技術的には3番目のレベルである分散サービスレベルも存在しますが、このレベルはまだ仕様として完成していません。そのため、著者は分散サービスについて序論のみで解説することにしています。
極めて重要な序文。
書籍の序文を重要な章とみなすのは比較的稀ですが、本書では極めて重要な部分です。序文ではJMX仕様の高レベルな概要が提供されており、本書の残りの部分を理解するためには、この概要を理解する必要があります。さらに、非常に抽象的ではありますが、例も示されています。
本書は導入部の後、JMXの核心に迫り、MBeanを紹介します。MBeanには標準、動的、モデル、オープンの4種類があり、それぞれに1章ずつ、計4章が設けられています。各章は1ページで構成され、その種類のMBeanをいつ、なぜ使用すべきかを説明し、その動作についても詳細に解説しています。最初の4章は、本書の最初の140ページ(約50%)を占め、JMXのインストルメンテーションレベルを網羅しています。
本書では各タイプのMBeanを丁寧に解説していますが、私にとっては読み進めるのが大変でした。各タイプのMBeanが類似しているため、最初の4章はなかなか話が進まず、最後まで読み通すのに苦労しました。各章には例題が1つずつ含まれていますが、どれもMBeanを退屈なキューに適用するといった内容ばかりです。キューよりももう少し活発な分野に焦点を当てた方が、読者にとって興味深く読めるかもしれません。
MBean環境の理解
本書の後半は、3つのJMXレイヤーのうち、中間エージェントレベルについて説明しています。このセクションでは、MBeanが組み込まれるコンテナの構成、MBeanサーバーと通知モデル、そして各JMXコンテナが備えていると予想される標準サービスのリストについて説明します。これらの章を読むことで、管理対象サーバーで何ができるかを理解することができましたが、MBeanの使い方や、学んだ内容を自分のコードにどのように適用できるかについては、あまり理解できませんでした。
サービスの書き方の例がここに追加されていたら、とても興味深かったでしょう。職場では、Timerサービスを、Javaのオープンソースのcron風APIであるQuartzベースのサービスに置き換え、本番環境で問題なく使用しています。著者が作成したサービスの例は、本書、あるいは巻末に掲載されていたらもっと良かったでしょう。
残念ながら例が不足している
前述の通り、私はJ2EEソリューションで快適に使用していたフレームワークの基盤となる構造を示してくれるものを探してこの本を手に取りました。Java Management Extensionsは確かにその役割を果たしましたが、学んだことをすぐに実践してみようという意欲を掻き立てるような内容ではありませんでした。本書に特に目立った欠点はありません。著者の文体も不快ではなく、JMX仕様への理解も示しており、主題もしっかりと網羅されています。それでも、何かが腑に落ちませんでした。
問題は、私がJMXから得る有用性がこの本では全く伝わってこないことにあるのかもしれません。少なくとも私にとっては、魅力的な例が不足しているため、そもそもJMXが必要な理由を的確に捉えられていないように思います。コンテナ内で動作するサーブレットの魅力的な例が紹介されていないサーブレットに関する書籍を思い浮かべてみてください。そうすれば、その理由が理解できるでしょう。私の問題の多くはJMXの新しさに起因するかもしれませんが、だからといって興味深い例が不足していることを正当化するわけではありません。
結論:
既にMBeansを使っているなら、本書を武器に加えるのは間違いありません。ほとんどのリファレンスニーズを満たしてくれるので、WebやJ2EEコンテナのドキュメントを探し回る手間が省けます。私のように、日々の使用でJMXのほんの一部しか理解できていないと感じているなら、本書はその奥深さを示してくれるでしょう。
しかし、現在JMXを使用しておらず、JMXの入門書として理解を深められる本を探しているなら、第2版を待つことをお勧めします。その頃にはJMXはより成熟し、プラグイン可能なコンテナやMBeanの例や、分散サービスに関する第3章が追加されているかもしれません。つまり、購入する必要はありません。書店で入門書を読むだけで十分です。