EJB は Java を使用した分散型のオブジェクト指向ビジネスアプリケーションの構築にコンポーネントアーキテクチャを提供します。EJB をサポートするアプリケーションサーバを使用すると、Java 開発者は再利用可能なコンポーネントとしてエンタープライズアプリケーションのビジネスロジックを実装することに集中できます。EJB サーバは、コンポーネントのライフサイクル、状態の管理、パーシスタンス、マルチスレッド処理、コネクションプール、トランザクション管理、セキュリティなどの複雑な下位レベルサービスを処理します。
EJB 仕様では次のタイプの Enterprise JavaBeans を定義しています。
次のコンストラクトは EJB にアクセスするときに使用できます。
次の手順では、JSP スクリプトレットをコーディングして、セッション bean である予約用 EJB にアクセスします。次に、リモートインターフェイス、リモートホームインターフェイス、および bean の実装クラスのコードを検証します。
<% //ログオンサーブレットで設定します。 String type=request.getParameter("type"); String number=request.getParameter("number"); String expiration=request.getParameter("expiration"); String userId=(String) session.getAttribute("userId"); int tripId=trip.getTripId(); double price=trip.getPrice(); try { //ネームサーバと通信する初期コンテキストオブジェクトが必要です。 javax.naming.InitialContext ctx=new javax.naming.InitialContext(); //lookup メソッドを使用すると、ネームサーバを照会して EJB を配置し、 //ホームインターフェイスへのリファレンスを返します。 Object obj=ctx.lookup("Reservation"); //リモートホームインターフェイスのデータタイプのリファレンスを配列します。 ReservationHomeRemote home=(ReservationHomeRemote) javax.rmi.PortableRemoteObject.narrow (obj, ReservationHomeRemote.class); //リモートインターフェイスへのリファレンスを取得します。 ReservationRemote reservation=home.create(); //旅行を予約する reserve メソッドを呼び出します。 int id=reservation.reserve(userId, tripId, price, type, number, expiration); %> ありがとうございます。予約内容は確認されました。<br><br> 予約番号は次のとおりです:<%= id %><br> <% } catch (Exception e) { %> 申しわけありません。この旅行を予約できませんでした。 <br><%= e.getMessage() %> <% } %>
メモ: 8101 または tutorial サーバを作成したときに JRun が割り当てた Web サーバのポート番号を使用します ( の 手順3 を参照)。
メモ: 旅行を予約するには、定義済みユーザー (名前 john と パスワード john、または名前 mary とパスワード mary) としてログインする必要があります。
セッション bean を使用して、EJB 間の相互作用の調整や、タスクを実行するために複雑な操作を行うことはよくあります。旅行リストの検索、ATM との相互作用、予約の作成など、アプリケーションでのタスクとロジックを記述するためにセッション bean を使用します。次の手順では、予約用セッション bean を使用して、アドベンチャー旅コースを予約します。