最終回となる今回は、ビジネス層、永続化層の開発にこれらの技術を使う理由と、それぞれの特徴を説明する。プレゼンテーション層はJSFで作るEJB─作るのは簡単。API)」を取り上げます。EJBについて説明しましょう。JSFで作られた画面でユーザーが入力した値は、何らかの業務処理を経た後、その結果が遷移先の画面として返されます。この流れの中で、業務処理を行うビジネス・ロジックの開発に使うフレームワークがEJBです。EJBで開発するコンポーネントは「EJBコンポーネント」と呼ばれますが、これには下表に示すようにいくつかの種類があります。クライアント/サーバ間やシステム間のやり取り(セッション)を通じて実行するビジネス・ロジックを実装するためのEJBコンポーネント。メッセージ・サーバからの要求に応じてビジネス・ロジックを実行するEJBコンポーネント。データベースへのデータ永続化に使用するEJBコンポーネント。同様の機能を実現する技術としてJPAが導入されたのに伴い、現在は非推奨(将来的に廃止される予定の機能であるため、使用が推奨されない)の扱いとなっている表に挙げたEJBコンポーネントのうち、皆さんがWebアプリケーションの開発で最も頻繁に作るのは「ステートレス・セッションBean」でしょう。そこで以降では、このステートレス・セッションBeanを例にとって説明します。次に示すのは、ステートレス・セッションBeanのコードの例です。}}この例では、蔵書を管理するアプリケーションを想定しており、「蔵書データベースに新たな書籍情報を追加する(メソッドaddBook)」、「蔵書データベース内の特定の書籍情報を参照する(メソッドgetBook)」といった操作がビジネス・ロジックに当たります。Object)とほとんど変わりません。POJOと異なるのは、コード内に赤字で記した部分です。これらの部分では、Javaのアノテーションの仕組みを利用して、次の情報をアプリケーション・サーバに伝えています。@Stateless:ステートレス・セッションBeanであることを示す@LocalBean:EJBの旧バージョンで必須とされていたインタフェースの作成を省略することを示すPOJOにこれらのアノテーションを付加するだけで、そのJavaクラスはアプリケーション・サーバ上でEJBコンポーネントとして扱われるのです。6ではこんなに簡単に作れるようになっているのです。EEでは、プレゼンテーション層を担うJSFだけで、ある程度の機能を備えたWebアプリケーションを作ることが可能です。それでは、なぜプレゼンテーション層とは別にビジネス層を設け、その開発にEJBを使うのでしょうか。その理由としては、次の2つが挙げられます。ビジネス・ロジックの再利用性の確保アプリケーション・サーバ/EJBコンテナに備わる機能の活用まず「再利用性」ですが、企業システムにおいて、ビジネス・ロジックを呼び出すプログラムは、Webアプリケーションの画面だけとは限りません。SwingやJavaFXで作られたスタンドアロンのアプリケーションからネットワークを介してリモートで呼び出されることもありますし、メッセージングを介して他システムから呼び出されることも、あるいはWebサービスとして他システムから呼び出されることもあります。呼び出し元が何であれ、実行するビジネス・ロジックは同じです。そこで、呼び出し元の違いに応じてビジネス・ロジックを作るのではなく、ビジネス・ロジックはビジネス層として、呼び出し元の違いを吸収する層(Webアプリケーションならプレゼンテーション層)とは分けて作ることで、ビジネス・ロジックを再利用できるようにしているのです。再利用性の確保だけが目的なら、ビジネス・ロジックをEJBコンポーネントとして作る必要はありません。POJOとして作り、それを各呼び出し元から使うかたちにしても問題はないはずです。実際、簡易なシステムでは、そのように作るケースもあります。それでは、なぜEJBを使うのかというと、アプリケーション・サーバと、その一部であるEJBコンポーネントの実行環境(これを「EJBコンテナ」と呼びます)の機能を利用するためです。SEに対して企業システムの開発に必要となる機能を追加した仕様です。その追加された機能を、EJBコンテナやアプリケーション・サーバが提供してくれることで、開発者は個々のアプリケーションに固有の処理だけを作れば済むようになるのです。アプリケーション・サーバやEJBコンテナが提供する主な機能としては、次が挙げられます。Injection):ビジネス・ロジックの実行にあたって必要となる他のJavaオブジェクトへの参照を自動的に注入(Inject)する。この機能により、ビジネス・ロジックを、その実行に際して必要となる周辺機能から容易に分離して再利用することが可能となる●トランザクション管理:データベースに対するトランザクションの開始、終了、ロールバックなどの制御を行う●インスタンス・プーリング:一度生成したEJBコンポーネントのインスタンスをプールして複数のセッションで再利用し、インスタンス生成などによるリソース消費を抑制する●セキュリティ:クラスやメソッドのレベルでEJBコンポーネントへのアクセスを制御する●タイマー:指定した時間にビジネス・ロジックを実行するこれらは、いずれも今日の企業システム開発に必須の機能です。ビジネス・ロジックをEJBコンポーネントとして作る場合、アプリケーション・サーバやEJBコンテナに用意されたこれらの機能を使えるようになり、開発者はアプリケーション固有の処理の開発に注力することができます。これが、ビジネス・ロジックをEJBで作る理由なのです。お試しいただけるトライアル・サービスをご提供しております。permission.×このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。