|
||||||||||||||
| 前のページ 1 2 3 | ||||||||||||||
| リポジトリ機能とOpenLDAP | ||||||||||||||
|
リポジトリ情報の性質を再度整理すると表3にまとめられます。
表3:リポジトリ情報の性質
この表3の情報を提供しているということはディレクトリサービスであるということができます。Hinemosではこのリポジトリ情報をOpenLDAPを用いて管理しています。 JavaプログラムでLDAPへ参照する場合は、JNDI(Java Naming and Directory Interface)を経由して行うことが一般的です。JNDIはリモートオブジェクトやデータソースを取得するために利用されることが多いのですが、サービスプロバイダとしてLDAPを用意することで、LDAPに登録されている情報を参照することができます。 Hinemosでは、LDAPへ直接参照させずに分離した実装をしています。JNDIを利用するコードを各機能に直接記述してLDAPにアクセスすることもできますが、そうするとHinemosではいくつか不都合なことが起きます。主な不都合としては、LDAPに関するコードが散在してしまい機能拡張や不具合発生時に改修が困難となること、アクセスのタイミングにより参照した情報にズレが発生してしまうことなどです。 この課題を解決するために、Hinemosのリポジトリ機能はEJB(EnityBean+SessionBean)で実装しています。EntityBeanはノードやスコープのそれぞれの情報を保持し、SessionBeanは個々のノードやスコープの情報にまとめてアクセスするための窓口となります。各機能はSessionBeanの窓口を経由してリポジトリ情報を参照しており、そうすることで次のメリットを得ています。
表4:EJBのメリット
またEntityBeanを利用する副次効果として、将来はOpenLDAP以外のコンポーネントに置き換える必要が生じた場合、各機能に手を加えることなく置き換えることが可能であるというメリットもあります。 EntityBeanの永続化の方法には、BMP(Bean Managed Persistence)とCMP(Container Managed Persistence)の2つの種類があります。しかしJBossはLDAPをデータソースとしてサポートしていませんので、EntityBeanの永続化にLDAPを利用する場合にCMPを使用することはできません。そこで、BMPとしてLDAPに対するアクセスの実装を行っています。 ノード情報のDAOコード例(loadメソッドの一部) 上記のように実装されたリポジトリ情報は、SessionBeanを経由して「スコープに属するノードすべて」を参照し、各機能で利用することができます。 各機能でリポジトリ機能を使うコードの例 このようにリポジトリ機能は、実際に監視・操作を行う機能に対して、操作に必要なノードやスコープの情報をOpenLDAPを用いて保持し、EJBを利用して提供する仕組みを実現している訳です。 今回説明したリポジトリ機能は、OpenLDAPを利用したHinemosにおいて、運用管理を行う際の共通基盤の役割を担っていることを理解していただけたかと思います。 次回は、Eclipse RCPで実現した統合運用画面について説明いたします。 |
||||||||||||||
|
前のページ 1 2 3 |
||||||||||||||
|
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||




