Java2 Enterprise Editionの基礎知識 |
|
サーブレット(以下Servlet)にServletコンテナがあるのと同じように、EJBも、JavaVMの上で直接動作するわけではなく、EJBコンテナの上で動作するようになっています。
EJBコンテナとは、EJBを動作させるための機能(例えば、システムレベルのサービスなど)を実装した環境で、個々のEJBでは隠されていたり抽象化されているサービスをEJBに代わって実行します。
さらに、EJBコンテナを動作させる環境として、EJBサーバが必要です。EJBサーバはEJBコンテナと外部リソースとの通信を行う機能を実装しています。1つのEJBサーバで、複数のEJBコンテナを管理して動作させることもできます。
では、EJBが動作する手順はどうなっているのでしょうか? まず、ひとくちにEJBといった場合には、以下の3つの要素から構成されたものを指しています。
●Bean Class
EJBの本体となるクラス。ここに実際のビジネスロジックなどを記述します。
●Home Interface
EJBの生成、消滅、検索を行うためのインターフェイス。それぞれの機能に対応したメソッドのシグニチャが定義されています。
●Remote Interface
ビジネスロジックの呼び出しを行うためのインターフェイス。Bean Classのビジネスロジックメソッドのシグニチャが定義されています。
これらがどういった役割を果たしているかを含めて、以下にEJBの動作手順を説明しましょう。
EJBの動作手順。(1)〜(5)の内容は以下の記事を参照 |
(1) EJBクライアント(EJBを利用する側)が、必要なEJBがどこにあるかを、ネーミングサービス(JNDIなど)に問い合わせます(実際には、Beanのインスタンスを生成するためのHome Interfaceへの参照を問い合わせます)。
(2) ネーミングサービスは、呼び出し元に、Home Interfaceへの参照を返します。以下のリストは、 「Calc」という名前で登録されたBeanのHome Interfaceを取得するコードの例です。
javax.naming.InitialContext ctx = new
javax.naming.InitialContext(); |
(3) EJBクライアントは、取得したHome Interfaceを用いて、Beanインスタンスの生成や検索を行います。
(4) Beanインスタンス生成の際に、戻り値として Remote Interfaceの参照が取得できます。以下のリストは、 「Calc」という名前のBeanのインスタンスを生成するコードの例です。
Calc calcRemote = calcHome.create(); |
(5) EJBクライアントは、Remote Interfaceのメソッドを呼び出すことにより、 ビジネスロジックを実行します。以下のリストは、 「Calc」という名前のBeanのビジネスロジックを呼び出すコードの例です。
int number = 256; |
さまざまなシステムレベルのサービスが実装されたEJBコンテナと、EJBの間にインターフェイスを設け、それを介してEJBにアクセスする構造になっています。こうすることによって、EJBを呼び出す側にも、EJBの側にも、複雑なサービスにかかわる処理を意識させることなく処理を行うことができ、コンポーネントとしての再利用性を高めることが可能になっています。
「Java Solution FAQ」 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|