手順 3 : VisitTrackerBean セッション Bean を作成する

前の手順では、訪問をモデル化するエンティティ Bean を作成しました。この Bean は、データベース内の訪問データの行を表します。この手順では、訪問の追跡をモデル化するセッション Bean (別の種類の EJB) を作成します。

WebLogic Server のトピック (「アプリケーションによる EJB の使い方」) で説明されているように、セッション Bean はビジネス ロジックを実装し、クライアントの代理として機能します。このチュートリアルで構築するアプリケーションの場合、クライアントはテスト Web ページ (ひいてはそのページのユーザ) です。クライアントの要求を満たすために、これから作成するセッション Bean は、訪問者を名前で見つける方法、訪問回数をインクリメントする方法などを認識します。

この節では、VisitTrackerBean ソース ファイルを作成します。

VisitTrackerBean のソース ファイルを作成するには

  1. [プロジェクト・エクスプローラ] で [VisitEJBProject|src] を展開し、[hello] を右クリックして [新規|WebLogic セッション Bean] を選択します。
  2. [新しいセッション Bean] ダイアログの [ファイル名] ボックスに VisitTrackerBean と入力して [終了] をクリックします。

    VisitBean エンティティ Bean と同様に、この新しいセッション Bean にもあらかじめていくつかのアノテーションが入力されています。それらは以下のとおりです。

    • @Session - セッション Bean のクラススコープのプロパティを定義します。

      属性 説明
      ejbName セッション Bean の説明的な名前。
    • @JndiName - EJB のローカルおよびリモート JNDI 名、つまりそのローカル インタフェースとリモート インタフェースに関連付けられている JNDI 名を指定します。コードに示される属性には以下のようなものがあります。

      属性 説明
      remote EJB のリモート JNDI 名。
    • @FileGeneration - ビルド中に自動生成されるインタフェース、複合主キー、および値クラスを指定します。

      属性 説明
      localClass EJB のローカル インタフェースを生成するかどうか。
      localHome EJB のローカル ホーム インタフェースを生成するかどうか。
      remoteClass EJB のリモート インタフェースを生成するかどうか。
      remoteHome EJB のリモート ホーム インタフェースを生成するかどうか。
      valueClass EJB の値クラスを生成するかどうかを指定します。
  3. 追加するコードをサポートするために、次の import コードを追加します。
  4. import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.ejb.EJBException;
    import javax.ejb.FinderException;
    import javax.ejb.CreateException;
    import weblogic.ejbgen.EjbLocalRefs;
    import weblogic.ejbgen.EjbLocalRef;
  5. @Session アノテーションの上に、ネストされた @EjbLocalRef アノテーションと一緒に次の @EjbLocalRefs アノテーションを貼り付けます。
    @EjbLocalRefs({
        @EjbLocalRef(home = "hello.VisitBeanLocalHome", 
            jndiName = "ejb.VisitBeanLocalHome", 
            local = "hello.VisitBeanLocal", 
            name = "ejb/VisitBean",
            type = Constants.RefType.ENTITY)
    })
    次の表では、設定する属性について説明します。

    属性 説明
    home 参照先 EJB のローカル ホーム インタフェース。
    jndiName 参照先 EJB のローカル JNDI 名。
    local 参照先 EJB のローカル (ビジネス) インタフェース。
    name 他の Bean を参照するときに使用される名前。
    type 参照先 Bean の EJB タイプ。
  6. 追加された ejbCreate メソッドの上に visitHome フィールドを追加します。作成するコードでは、この変数を使用して特定の訪問者の VisitBean インスタンスを作成します。
  7. private VisitBeanLocalHome visitHome;
  8. ejbCreate メソッドを次のように編集します。このコードは、VisitBean インスタンスを取得します。
  9. public void ejbCreate()
    {
        try
        {
            javax.naming.Context initialContext = new InitialContext();
            visitHome = (VisitBeanLocalHome) initialContext.lookup("java:comp/env/ejb/VisitBean");
        } catch (NamingException ne)
        {
            throw new EJBException(ne);
        }
    }
  10. ejbCreate メソッド コードの下に、次の greetVisitor メソッド コードを追加します。
  11. public String greetVisitor(String visitorName)
    {
        VisitBeanLocal theVisit;
        int visitNumber;
    
        try 
        {
            // データベース内の訪問者を検索。
            theVisit = visitHome.findByPrimaryKey(visitorName);
        } catch (FinderException fe) 
        {
            try 
            {
                // 訪問者がデータベースに存在しない場合、
                // 指定の名前で新しい訪問者を作成。
                visitHome.create(visitorName);
                // 新しい訪問者に対してあいさつを返す。
            return "Hello, " + visitorName + "!;
            } catch (CreateException ce) 
            {
                throw new EJBException(ce);
            }
        }
        // 再訪問者の訪問回数を取得し、
        // この訪問からインクリメントする。
        visitNumber = theVisit.getVisitNumber();
        theVisit.setVisitNumber(visitNumber + 1);
        // 再訪問者に対してあいさつを返す。
        if (visitNumber == 1) 
        {
            return "Hello again, " + visitorName + "!";
        } else 
        {
            return "Hello, " + visitorName + "! This is visit number "
                + theVisit.getVisitNumber() + ".";
        } 
    }
  12. greetVisitor メソッド コードにカーソルを合わせ、[プロパティ] ビューで RemoteMethod プロパティを検索します。
  13. RemoteMethod プロパティを右クリックして、[アノテーションの追加] をクリックします。@RemoteMethod() アノテーションが greetVisitor メソッドの直前に追加されるはずです。
  14. 〔Ctrl〕+〔S〕を押して作業を保存します。

これでエンティティ Bean とセッション Bean のコードが完成し、これらをテストする準備が整いました。次の手順では、そのための設定を行います。

関連トピック

セッション Bean の開発

チュートリアルを移動するには、矢印をクリックしてください。


さらにヘルプが必要ですか。質問は Workshop ニュース グループまでお寄せください。