前の手順では、訪問をモデル化するエンティティ Bean を作成しました。この Bean は、データベース内の訪問データの行を表します。この手順では、訪問の追跡をモデル化するセッション Bean (別の種類の EJB) を作成します。
WebLogic Server のトピック (「アプリケーションによる EJB の使い方」) で説明されているように、セッション Bean はビジネス ロジックを実装し、クライアントの代理として機能します。このチュートリアルで構築するアプリケーションの場合、クライアントはテスト Web ページ (ひいてはそのページのユーザ) です。クライアントの要求を満たすために、これから作成するセッション Bean は、訪問者を名前で見つける方法、訪問回数をインクリメントする方法などを認識します。
この節では、VisitTrackerBean
ソース ファイルを作成します。
VisitBean
エンティティ Bean と同様に、この新しいセッション Bean にもあらかじめていくつかのアノテーションが入力されています。それらは以下のとおりです。
@Session
- セッション Bean のクラススコープのプロパティを定義します。![]() |
![]() |
![]() |
||||
![]() |
|
![]() |
||||
![]() |
![]() |
![]() |
@JndiName
- EJB のローカルおよびリモート JNDI 名、つまりそのローカル インタフェースとリモート インタフェースに関連付けられている JNDI 名を指定します。コードに示される属性には以下のようなものがあります。![]() |
![]() |
![]() |
||||
![]() |
|
![]() |
||||
![]() |
![]() |
![]() |
@FileGeneration
- ビルド中に自動生成されるインタフェース、複合主キー、および値クラスを指定します。![]() |
![]() |
![]() |
||||||||||||
![]() |
|
![]() |
||||||||||||
![]() |
![]() |
![]() |
import
コードを追加します。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;
@Session
アノテーションの上に、ネストされた @EjbLocalRef
アノテーションと一緒に次の @EjbLocalRefs
アノテーションを貼り付けます。
@EjbLocalRefs({ @EjbLocalRef(home = "hello.VisitBeanLocalHome", jndiName = "ejb.VisitBeanLocalHome", local = "hello.VisitBeanLocal", name = "ejb/VisitBean", type = Constants.RefType.ENTITY) })次の表では、設定する属性について説明します。
![]() |
![]() |
![]() |
||||||||||||
![]() |
|
![]() |
||||||||||||
![]() |
![]() |
![]() |
ejbCreate
メソッドの上に visitHome
フィールドを追加します。作成するコードでは、この変数を使用して特定の訪問者の VisitBean
インスタンスを作成します。 private VisitBeanLocalHome visitHome;
ejbCreate
メソッドを次のように編集します。このコードは、VisitBean
インスタンスを取得します。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); } }
ejbCreate
メソッド コードの下に、次の greetVisitor
メソッド コードを追加します。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() + "."; } }
greetVisitor
メソッド コードにカーソルを合わせ、[プロパティ] ビューで RemoteMethod プロパティを検索します。@RemoteMethod()
アノテーションが greetVisitor
メソッドの直前に追加されるはずです。 これでエンティティ Bean とセッション Bean のコードが完成し、これらをテストする準備が整いました。次の手順では、そのための設定を行います。