Middleware
Application Server
EJB 2.xクライアントとの下位互換性をサポートするEJB 3.0の開発方法 日付:2006年6月12日
はじめにこのデモ・アプリケーションでは、Oracle Application Server 10g 10.1.3.1に対するEJB 3.0仕様へのサポート、EJBHomeのオプション使用に対するサポート、および古いEJB 2.xクライアントを分断せずにEJBコンポーネントをEJB 3.0に移行する方法について説明します。 ここでは、ステートフルEJBを例に説明します。 EJB 3.0は、以前のバージョンで開発者の直面した様々な複雑性を排除し、EJBアプリケーションの開発を大幅に簡素化します。 EJB 2.1を使用して簡単なステートフルEJBを作成するには、Beanクラス、2つのインタフェース、デプロイメント・ディスクリプタが必要でした。 コンポーネント・インタフェース(リモートまたはローカル、あるいは両方)およびホーム・インタフェースがそれぞれ javax.ejb.EJBObjectと javax.ejb.EJBHomeを拡張し、Beanクラスが javax.ejb.SessionBeanインタフェースを実装する必要がありました。 EJB 3.0では、それら多くの要件が次のように緩和されています。
基本的なショッピング・カートEJBを作成して、EJB 3.0を使用した簡単なステートフルEJBの例を示します。 この例では、オプションのホーム・インタフェースを使用します。 EJB 3.0を使用したステートフルSession Bean次に、Cart EJBのリモート・インタフェースを示します。 これは、Pure Javaインタフェースで、 EJBObjectを拡張しません。
package oracle.ejb30;
import java.util.Collection;
import javax.ejb.Remote;
@Remote
public interface Cart {
public void addItem(String item);
public void removeItem(String item);
public Collection getItems();
}
>次に、Beanクラスのコードを示します。 EJBは、ビジネス・インタフェースを実装する簡単なJavaクラスです。
@Init注釈で注釈されるメソッドはすべて、EJB 2.1クライアントがステートフルSession Beanインスタンスのcreateメソッドを起動すると起動します。 @RemoteHome(CartHome.class)注釈は、Beanのホーム・インタフェースをoracle.ejb30.CartHomeとしてマークします。 EJBクライアントEJBクライアント・コードは、EJB 3.0では大幅に簡素化されます。 クライアントはJNDIからのEJBホーム・インタフェースの検索を必要とせず、ホーム・インタフェースのcreateを起動して特別にBeanインスタンスを作成する必要はありません。 クライアントは、EJBでメソッドを簡単に直接起動できます。 ただし、分散システムで使用されるEJBの場合は、すべてのアプリケーションにデプロイされたクライアント・コードの変更を適用する余裕がない場合があります。 したがって、EJBHomeオブジェクトの検索とcreateメソッドの呼び出しに基づいてBeanのインスタンスを取得する旧式のルックアップを使用した、既存のクライアント・コード・ベースのサポートが必要となる場合もあります。 次に、EJBにアクセスするクライアント・コードのスニペットを示します。
public class CartClient {
public static void main(String[] args) throws Exception {
Context context = new InitialContext();
System.out.println("Looking up Cart");
CartHome cartHome =
Cart cart = cartHome.create();
System.out.println("Adding items to cart");
cart.addItem("Item1");
cart.addItem("Item2");
System.out.println("Listing cart contents");
Collection items = cart.getItems();
for (Iterator i = items.iterator(); i.hasNext();) {
String item = (String) i.next();
System.out.println(" " + item);
}
}
}
前提条件必須知識
ソフトウェア要件このデモンストレーションでは、次のソフトウェア・コンポーネントがインストールされ、正しく構成されている必要があります。
表記法
アプリケーションの構築重要な構成ファイルはすべて %HOWTO_HOME%/etcにあります。これには、application.xmlのようなデプロイメント・ディスクリプタ・ファイルなどが含まれます。 アプリケーションの実行次の手順は、Oracle Application Server 10g 10.1.3. 1 のスタンドアロンのインスタンスでデモンストレーションを実行する方法です。 配布方法の確認
環境の設定環境の設定次の環境変数が定義されていることを確認してください。
Oracle Application Server 10g 10.1.3.の起動以上を変更した後に、次のコマンドを使用してOracle Containers for J2EE(OC4J)をスタンドアロンで起動します。
Oracle Application Server管理インストールを使用している場合、上記の変更後に次のコマンドを使用します。
4. アプリケーションの生成、コンパイル、およびデプロイAnt 1.6.2はOracle Containers for J2EE(OC4J)に同梱されており、 PATH環境変数を $ORACLE_HOME/ant/binに設定する必要があります。 オペレーティング・システムによっては、現在はAntが環境変数をサポートしていないものがあります。 該当するオペレーティング・システムの場合は、 %HOWTO_HOME%ディレクトリにあるant-oracle.xmlを修正してください。 demoディレクトリにあるant-oracle.propertiesを編集して、次のOracle Containers for J2EE(OC4J)スタンドアロンで示されているとおりに、プロパティに正しい値が設定されていることを確認してください。
IOracle Application Server管理インストールを使用している場合、Oracle Application Serverのインストールで管理されているOracle Containers for J2EE(OC4J)インスタンスの oc4j.admin.userおよび oc4j.admin.password以外の変更については、次のプロパティを変更します。
環境に応じて、ant-oracle.propertiesのdeployer.uriを適切にコメントアウトする必要があります。たとえば、OPMNの管理する単一のOracle Containers for J2EE(OC4J)インスタンスやクラスタ化されたOC4Jインスタンス/グループなどです。 また、環境に合わせて、 jndi.propertiesのprovider.url、principalおよびcredentialの変更が必要です。 Oracle Application Server管理インストールを使用している場合は、provider.urlを次の形式で使用してください。 opmn:ormi://localhost:6003:home/ejb30compatibility. アプリケーションの構築トップレベルの %HOWTO_HOME%ディレクトリに次のコマンドを入力します。 >ant これで、 %HOWTO_HOME%/libディレクトリ内に ejb30compatibility.earが新しく作成されます。 構築に成功すると、このコマンドはアプリケーションをデプロイするよう試みます。 まず、OC4Jが稼働しているかをテストします。 アプリケーションのデプロイ次のコマンドを使用して、アプリケーションを個別にデプロイすることもできます。 %ORACLE_HOME%環境変数が定義されていることを確認します。 トップレベルの %HOWTO_HOME%ディレクトリに次のコマンドを入力します。 >ant deploy アプリケーションの実行サンプルを次のように実行します。 >ant run Oracle Containers for J2EE(OC4J)を起動したコンソールに戻ると、Cart EJBが生成した出力が表示されています。 [java] Looking up Cart
まとめこのドキュメントで学習した内容は、次のとおりです。
|