EJBって何だ!?どうやらWebアプリケーション層の話のようです。
「6 クラスタのフェイルオーバーとレプリケーション」について読んでいたら、EJBという言葉が出てきます。
EJBって何!?
ってなりました。ということでEJBについて調べたところ、どうやら「Webアプリケーション層」に関連があるらしい。
Webアプリケーション層
Webアプリケーションは通常、以下の4層から構成されています。
クライアント層
ブラウザやモバイルアプリなど、ユーザがアクセスするクライアント端末の層です。
HTMLやCSSなどでUIを構築し、JavaScriptでユーザ入力を処理します。
プレゼンテーション層
クライアントからのリクエストを受け取り、レスポンス(画面データ)を生成する役割があります。
Webサーバ上で動作し、JSP、Servlet、ASP.NET MVCなどの技術で実装されます。
プレゼンテーション層はビジネスロジック層にデータアクセス要求を行います。
ビジネスロジック層(サービス層)
アプリケーションの本体機能を実装するメイン層です。
顧客管理、在庫管理、決済処理などの業務ロジックをプログラミングします。
データアクセス層にデータ永続化の要求を行います。
データアクセス層(パーシステンス層)
データベースやファイルなどのデータソースを抽象化する層です。
SQLやORMなどを使ってデータの永続化を行います。
これらの層は疎結合に設計され、相互の依存関係を低く保つことで保守性と柔軟性を高めています。
一般に、クライアント層とプレゼンテーション層はWebブラウザやWebサーバなどで動作し、ビジネスロジック層とデータアクセス層はアプリケーションサーバなどのミドルウェア上で動作します。
このように責務を分離することで、UIとビジネスロジック、データアクセスを分けて実装でき、保守性が高まるというメリットがあります。
以下、「Oracle® Fusion Middleware Oracle WebLogic Serverクラスタの管理12c (12.2.1.2.0)」の「9 クラスタ・アーキテクチャ」より抜粋です。
Web層がでてきましたね。
クライアント層:ブラウザ、モバイルアプリなど
Web層:静的コンテンツ(HTMLページなど)を提供する層
プレゼンテーション層:動的コンテンツ(サーブレット、JSPなど)を生成する層
ビジネスロジック層 (オブジェクト層):アプリケーションの本体機能を実装するメイン層
データアクセス層
と考えることができるようです。
さて、EJBについてです
EJB (Enterprise JavaBeans)
java APIの一種。
ここで、そもそもjava APIって何!?外部から参照して利用するのがAPIなんじゃないの!?
という浅ーい理解でいたのですが、どうやら
import java.util.ArrayList; //ArrayListクラスをインポート
みたいな、今まで無意識に使ってたimport。
こやつにより「java APIを活用する」ということになっていたらしい。
さて、話を戻してEJBについてです。
EJB(Enterprise JavaBeans)は、J2EEプラットフォームにおいてビジネスロジックを実装するコンポーネントです。
EJBの主な特徴と役割は以下の通りです。
EJBの特徴
コンポーネント化されたビジネスロジック
EJBは、アプリケーションのビジネスロジックを再利用可能なコンポーネントとしてカプセル化します。
分散コンポーネントモデルに基づいており、ネットワーク越しに呼び出すことができます。
サーバー側コンポーネント
EJBはアプリケーションサーバー(J2EEサーバー)上で実行されます。
EJBコンテナと呼ばれる実行環境により、トランザクション制御、セキュリティ、リソース管理などの基盤サービスが提供されます。
3種類のEJB
セッションBean - 一時的な状態を持ち、クライアントからの要求を処理します。
エンティティBean - データベースなどの永続データの表現で、アクセスやデータ操作のロジックを実装します。
メッセージドリブンBean - メッセージングサービスとの連携を行います。
EJBの役割
ビジネスロジックの中核を担います。
データベースアクセスやデータ操作の処理を行います。
アプリケーション間の連携を制御します。
トランザクション処理やセキュリティなどの機能を利用できます。
EJBの利点
開発者はビジネスロジックに専念できます。コンテナがインフラ機能を提供します。
アプリケーションサーバー上で実行されるため、クラスタリングなどの機能が利用できます。
分散オブジェクトモデルに基づくので、ネットワーク越しの呼び出しが容易です。
再利用可能なコンポーネントとしてビジネスロジックがカプセル化されています。
EJBは・・・
・J2EEアプリケーションのコアとなるコンポーネントです。
・ビジネスロジックの実装に特化しています。
・アプリケーションサーバーの機能を最大限に活用できるのが特徴です。
・・・
なんかよくわかんなくなってきたので、ピジネスロジック層で色々やるんだな。っていうイメージにしておきます。