見出し画像

EJBって何だ!?どうやらWebアプリケーション層の話のようです。

6 クラスタのフェイルオーバーとレプリケーション」について読んでいたら、EJBという言葉が出てきます。


EJBって何!?

ってなりました。ということでEJBについて調べたところ、どうやら「Webアプリケーション層」に関連があるらしい。

Webアプリケーション層

Webアプリケーションは通常、以下の4層から構成されています。


  1. クライアント層

    • ブラウザやモバイルアプリなど、ユーザがアクセスするクライアント端末の層です。

    • HTMLやCSSなどでUIを構築し、JavaScriptでユーザ入力を処理します。

  2. プレゼンテーション層

    • クライアントからのリクエストを受け取り、レスポンス(画面データ)を生成する役割があります。

    • Webサーバ上で動作し、JSP、Servlet、ASP.NET MVCなどの技術で実装されます。

    • プレゼンテーション層はビジネスロジック層にデータアクセス要求を行います。

  3. ビジネスロジック層(サービス層)

    • アプリケーションの本体機能を実装するメイン層です。

    • 顧客管理、在庫管理、決済処理などの業務ロジックをプログラミングします。

    • データアクセス層にデータ永続化の要求を行います。

  4. データアクセス層(パーシステンス層)

    • データベースやファイルなどのデータソースを抽象化する層です。

    • SQLやORMなどを使ってデータの永続化を行います。

これらの層は疎結合に設計され、相互の依存関係を低く保つことで保守性と柔軟性を高めています。

一般に、クライアント層とプレゼンテーション層はWebブラウザやWebサーバなどで動作し、ビジネスロジック層とデータアクセス層はアプリケーションサーバなどのミドルウェア上で動作します。

このように責務を分離することで、UIとビジネスロジック、データアクセスを分けて実装でき、保守性が高まるというメリットがあります。

以下、「Oracle® Fusion Middleware Oracle WebLogic Serverクラスタの管理12c (12.2.1.2.0)」の「9 クラスタ・アーキテクチャ」より抜粋です。

Webアプリケーションの層
Webアプリケーションは、複数の「層」に分けられます。「層」は、アプリケーションで提供される論理的なサービスに対応します。すべてのWebアプリケーションが似通っているわけではないので、アプリケーションによっては、次に説明する層のすべてを利用しない場合があります。また、層はアプリケーションのサービスの論理的な区分を示すものであり、必ずしもハードウェアまたはソフトウェアのコンポーネント間の物理的な区分を示すものではありません。1つのWebLogic Serverインスタンスを実行している1台のマシンが、次に説明するすべての層を提供する場合もあります。

Web層
Web層では、Webアプリケーションのクライアントに対して静的なコンテンツ(単純なHTMLページなど)が提供されます。Web層は、通常、外部クライアントがWebアプリケーションにアクセスする最初のポイントになります。単純なWebアプリケーションでは、Apache、Netscape Enterprise ServerまたはMicrosoft Internet Information Serverを実行している1つまたは複数のマシンで構成されるWeb層が存在する場合もあります。

プレゼンテーション層
プレゼンテーション層では、Webアプリケーションのクライアントに対して動的なコンテンツ(たとえばサーブレットやJava Server Pages)が提供されます。Webアプリケーションのプレゼンテーション層は、サーブレットやJSPのホストになるWebLogic Serverインスタンスのクラスタで構成されます。クラスタでアプリケーションの静的なHTMLページも提供される場合は、クラスタにはWeb層とプレゼンテーション層の両方が含まれます。

オブジェクト層
オブジェクト層では、Webアプリケーションのクライアントに対してJavaオブジェクト(Enterprise JavaBeansやRMIクラスなど)や、それらに関連付けられたビジネス・ロジックが提供されます。EJBのホストになるWebLogic Serverクラスタは、オブジェクト層を提供します。

https://docs.oracle.com/cd/E84527_01/wls/CLUST/planning.htm#GUID-67A95CA3-E051-4455-9433-2643314B2E43

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の特徴

  1. コンポーネント化されたビジネスロジック

    • EJBは、アプリケーションのビジネスロジックを再利用可能なコンポーネントとしてカプセル化します。

    • 分散コンポーネントモデルに基づいており、ネットワーク越しに呼び出すことができます。

  2. サーバー側コンポーネント

    • EJBはアプリケーションサーバー(J2EEサーバー)上で実行されます。

    • EJBコンテナと呼ばれる実行環境により、トランザクション制御、セキュリティ、リソース管理などの基盤サービスが提供されます。

  3. 3種類のEJB

    • セッションBean - 一時的な状態を持ち、クライアントからの要求を処理します。

    • エンティティBean - データベースなどの永続データの表現で、アクセスやデータ操作のロジックを実装します。

    • メッセージドリブンBean - メッセージングサービスとの連携を行います。

EJBの役割

  • ビジネスロジックの中核を担います。

  • データベースアクセスやデータ操作の処理を行います。

  • アプリケーション間の連携を制御します。

  • トランザクション処理やセキュリティなどの機能を利用できます。

EJBの利点

  • 開発者はビジネスロジックに専念できます。コンテナがインフラ機能を提供します。

  • アプリケーションサーバー上で実行されるため、クラスタリングなどの機能が利用できます。

  • 分散オブジェクトモデルに基づくので、ネットワーク越しの呼び出しが容易です。

  • 再利用可能なコンポーネントとしてビジネスロジックがカプセル化されています。

EJBは・・・
・J2EEアプリケーションのコアとなるコンポーネントです。
・ビジネスロジックの実装に特化しています。
・アプリケーションサーバーの機能を最大限に活用できるのが特徴です。

・・・

なんかよくわかんなくなってきたので、ピジネスロジック層で色々やるんだな。っていうイメージにしておきます。

この記事が気に入ったらサポートをしてみませんか?