TOP調査レポート> Hinemosの処理とEJB
オープンソースをこう使った! 〜 運用管理ツールHinemosの秘密
オープンソースをこう使った! 〜 運用管理ツールHinemosの秘密

第4回:EJBにて実装した各運用機能について

著者:NTTデータ  宮本 洋輔   2006/9/14
前のページ  1  2  3  4  次のページ
Hinemosの処理とEJB

   Hinemosマネージャ部分の実装に採用しているEJBには、SessionBean/EntityBean/MessageDrivenBeanの3つがあり、表3にあるように、それぞれに適した形で利用しています。
SessionBean
クライアントからの応答や、ノードに対して行う運用管理のロジックを実現する。
EntityBean
Hinemosにおける監視・制御の定義情報やジョブ履歴情報、イベントの情報を保持・管理する。
MessageDrivenBean
非同期のログの受信や、ジョブ終了などの処理結果をHinemosに取り込む。

表3:各EJBのHinemosでの役割

   SessionBeanのメソッドはクライアントや定期実行の際に呼び出され、1つの運用管理オペレーションで必要となる条件判断やEntityBeanのコントロールなどを行います。クライアントとの情報のやり取りでは、SessionBeanのメソッドが窓口の役割となって、ネットワーク経由のEntityBeanのメソッド呼び出しのオーバーヘッドを軽減しています。

   EntityBeanオブジェクトは設定情報や履歴情報などのデータベースのレコード1つに対応するため、常にEntityBeanを経由してデータベースにアクセスすることで管理情報が複数の処理から書き換えられ整合性を損なうという心配はありません。

   また、EntityBeanには永続化の方法にBMPとCMPがあり、Hinemosでは性能管理など複雑で高速な処理が必要である部分はBMP、設定情報の保持には開発効率のよいCMPと管理する情報の性質により使い分けをしています。

   MessageDrivenBeanは、後述するJMSで受信したメッセージのハンドリングを行います。例えばログ監視では、ログを受信した際にマッチ条件よりそのログの重要度を付加し、EntityBeanを経由してデータベースに書き込む処理を行います。MessageDrivenBeanを用いることにより、ログの取り込み処理などは到着したタイミングで行うことができます。

   EJBに加えてHinemosではJBossで実装されているJ2EEのAPIを数多く利用しています。EJBとその他のJ2EEのAPIは密接に関連しており、クライアントとの接続や、トランザクションなど重要な役割を果たしています。

Hinemosで利用しているJ2EE API
図2:Hinemosで利用しているJ2EE API

   Hinemosで利用している主なAPIは以下のものです。

JNDI
RMIレジストリをJNDI経由で利用できるので、クライアントはEJBのインターフェースを参照し、リモートのオブジェクトを意識することなくマネージャに処理をさせることができます。また、Hinemosの機能間においても疎な結合を実現しており、修正・機能拡張の範囲を局所化することが可能となります。
JMS
不定期で送信されてくるログの監視や、非同期に動作させたいジョブエージェントと通信を行うためにJMSを利用しています。JMSのメッセージキューをかいすることで、マネージャはノードとのやり取りをJBossに委ねることができ、信頼性が高く、効率のよい通信を実現することができます。
JTA
トランザクション区分にCMT(Container-Managed Transaction)を利用することで、EJBメソッドの呼び出しを契機としてトランザクションの管理が適切に行われます。これより、Hinemosとしてはトランザクションを意識して実装を行う必要はありません。
JMX(MBean)
Hinemosでは、定周期の処理の開始にOSSのジョブスケジューラであるQuartzをMBeanとしてJBoss上で動作させています。QuartzはThe OpenSymphony Team(注1)により開発されているジョブスケジューラで、Hinemosの監視設定にある複雑なスケジューリングを大量に管理することができます。

表3:Hinemosが利用している主なAPI

注1: The OpenSymphony Team
http://www.opensymphony.com/quartz/

前のページ  1  2  3  4  次のページ


NTTデータ  宮本 洋輔
著者プロフィール
株式会社NTTデータ   宮本 洋輔
基盤システム事業本部 オープンソース開発センタ
2003年、株式会社NTTデータに入社。入社以来セキュリティや運用管理などのシステム管理OSSに関する研究開発に従事。現在はHinemosの開発とコミュニティ作りに活動している。

INDEX
第4回:EJBにて実装した各運用機能について
  はじめに
Hinemosの処理とEJB
  ジョブ管理機能を例にした実装方式の説明
  ジョブの自動実行(結果処理部)