セッション Bean の定義

このトピックでは、セッション Bean の作成方法、セッション Bean 内に最低限必要なもの、およびセッション Bean によって拡張されるさまざまなインタフェースの概要について説明します。このトピックの内容は以下のとおりです。

セッション Bean の作成

[WebLogic セッション Bean] ウィザードを使用すると、セッション Bean をゼロから簡単に作成できます。WebLogic EJB プロジェクトで新しいセッション Bean を設計する場合は、このウィザードを使用してテンプレートから基本セッション Bean コードを作成します。ウィザードを使用するには、Workshop で、[WebLogic EJB プロジェクト] フォルダを右クリックし、[新規] を選択して [WebLogic セッション Bean] をクリックします。

新しい Bean の作成方法の詳細については、「チュートリアル : エンタープライズ JavaBean の構築」を参照してください。

注意 : 別の EJB や EJB コントロールを介するなどの方法で、既存のセッション Bean を、アプリケーションから呼び出す場合は、そのセッション Bean の定義を変更する必要がなければ、アプリケーションに EJB Jar を追加するだけで十分です。

基本的なセッション Bean の定義

次のステートレス セッション Bean のコンポーネント メソッドは、製品の名前を受け取ると、その製品が既知である場合はそれを返し、その製品が見つからない場合は「不明な商品」であることを示すメッセージを返します。このメソッドは「エンティティ Bean の定義」に示されている ProductBean を使用してデータベース内の製品をルックアップし、その価格を返します。

package mypackage;

import javax.ejb.*;
import weblogic.ejb.*;
import weblogic.ejbgen.*;

@Session(ejbName = "PriceChecker")
@JndiName(local = "ejb.PriceCheckerLocalHome")
@FileGeneration(remoteClass = Constants.Bool.FALSE, 
        remoteHome = Constants.Bool.FALSE, 
        localClass = Constants.Bool.TRUE, 
        localClassName = "PriceCheckerLocal", 
        localHome = Constants.Bool.TRUE, 
        localHomeName = "PriceCheckerLocalHome")
@EjbLocalRefs( { 
    @EjbLocalRef(link = "Product") 
})
public class PriceCheckerBean 
    extends GenericSessionBean 
    implements SessionBean {
    
    private ProductHome productHome;

    public void ejbCreate() {
        try {
            javax.naming.Context ic = new InitialContext();
            productHome = 
                (ProductHome) ic.lookup("java:comp/env/ejb/Product");
        } catch (NamingException ne) {
            throw new EJBException(ne);
        }
    }

    @LocalMethod()
    public String returnPrice(String product) {
        Product theProduct;
        int visitNumber;

        try {
            theProduct = productHome.findByPrimaryKey(product);
        } catch (FinderException fe) {
            return "Product not known";
        }
        return "The price of this product is " + theProduct.getPrice();
    }
}

@Session アノテーションには、セッション Bean の実際の名前が指定されています。ステートフル セッション Bean では、このアノテーションには属性 type = Session.SessionType.STATEFUL が含まれます。ejbCreate メソッドでは、Product エンティティ Bean のローカル ホーム インタフェースへの参照が取得されます。lookup メソッドで Product Bean をルックアップするのに使用される JNDI 参照 Product は、@EjbLocalRef アノテーションを使用してこの Bean のローカル インタフェースにマップされます。このアノテーションは PriceChecker Bean のクラス定義の一番上で定義されます。JNDI ネーミングの詳細については、お好きな JNDI ドキュメントまたは http://java.sun.com を参照してください。

メソッド returnPrice は、このクラスのビジネス ロジックを実装します。Product Bean を使用して特定の製品を見つけ、その価格を返します。データベース内にその製品が見つからなければ、価格の代わりに Product not known メッセージを返します。

Workshop では、セッション Bean の作成に必要なすべての情報は、Bean クラス、ローカル ビジネス インタフェース、ローカル ホーム インタフェースなどについて個別の JAVA ファイルに格納されるのではなく、単一のファイルに格納されます。セッション Bean のビルド時に、これらのクラスは自動生成されます。自動生成に必要な情報を保持するために、さまざまな ejbgen アノテーションが使用されます。特に、@FileGeneration アノテーションは PriceChecker Bean のローカル ホームおよびビジネス インタフェースの名前を指定し、コンポーネント メソッドの @LocalMethod アノテーションはメソッドをローカル ビジネス インタフェースに定義する必要があることを指定します。

生成済みの JAVA ファイルは、リソース ビューで表示できます。このビューで、.apt_src フォルダを展開して、ソース パッケージに対応するフォルダを参照します。生成されたファイルは、これらのフォルダの中に存在します。プロジェクトのビルド フォルダを展開することで、生成されたファイルからコンパイルされた CLASS ファイルを (リソース ビューで) 参照できます。

あらかじめ定義されたメソッドとコールバック メソッド

セッション (およびエンティティ) Bean のインタフェースは、各種の有用なメソッドを含む、特定のインタフェースを拡張します。これには、以下のものがあります。

たとえば、これらのインタフェースは Bean インスタンスを削除し、またステートフル セッション Bean の場合は会話を終了する、remove メソッドを含みます。これらのインタフェースおよびそれらが定義するメソッドの詳細については、お好きな J2EE ドキュメントおよび http://java.sun.com の API リファレンスを参照してください。

すべてのセッション Bean で、javax.ejb.SessionBean インタフェースを実装している必要があります。このインタフェースは、特定の時点で EJB コンテナによって呼び出されるコールバック メソッドを定義します。コールバック メソッドは、setSessionContextejbActivateejbPassivate、および ejbRemove です。セッション Bean をゼロから定義する場合、このセッション Bean は weblogic.ejb.GenericSessionBean を拡張します。これには、これらのコールバック メソッドの空の実装が含まれます。つまり、空の実装をオーバーライドする必要がある場合にのみ、これらのメソッドを定義する必要があります。セッション Bean をインポートする場合、これらのコールバック メソッドはおそらく、Bean の ejb ファイル内で直接実装されます。コールバック メソッド、およびセッション Bean と EJB コンテナの間での対話におけるその役割の詳細については、「セッション Bean のライフサイクル」を参照してください。

関連トピック

セッション Bean のライフサイクル

weblogic.ejbgen.FileGeneration

weblogic.ejbgen.LocalMethod

weblogic.ejbgen.Session

 


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