![]() ![]() ![]() ![]() ![]() |
開発ガイド 05/16/03 09:21:28 |
EJB (Enterprise JavaBeans)は、J2EEアプリケーションアーキテクチャの重要な部分です。この章では、EJBについて紹介し、次のトピックが含まれています。
EJBは、トランザクションおよび安全である再使用可能なJavaベースのコンポーネントであり、リモートからアクセスできます。EJBコンポーネントを使用すると、アプリケーションにビジネス論理を提供したり、アプリケーションのユーザインタフェースをバックエンド情報システムにリンクしたり、JMSメッセージを処理したりできます。
。
EJBをJ2EEアプリケーションでどのように使用できるかは、次の図のとおりです。
EJBコンテナの利点 この図から、EJBは「EJBコンテナ」内のJ2EEサーバ上で実行されることが分かります。EJBコンテナでは、(EJB指定によって定義されているように)、ネーミングサービス、リモートアクセス、セキュリティ、およびトランザクションサポートのような低レベルのサービスを含むEJBランタイム環境を提供します。
ビジネス論理に焦点を合わせる 標準の方法でアクセスできる使用可能なこれらのサービスに依存できるため、低レベルのサービスではなく、ビジネス論理の記述に開発努力の焦点を合わせることができます。
EJBに移植性がある すべてのEJBコンテナではこれらの要件を満たしている必要があるため、EJBは、多くのEJBコンテナの実装間で移植が可能です。
注記: EJBコンテナベンダは、システム上に配備されているEJBに対して追加のサービスを提供できます。ただし、標準的でないサービスを活用するために開発されたEJBは移植できません。
クライアントからEJBへのアクセス方法 この図から、EJBクライアントではEJBに直接アクセスしないことも分かります。エンティティBeanとセッションBeanは、EJBObjectおよびEJBHomeオブジェクトを通じてアクセスされます。 EJBObjectは、EJBのビジネスメソッドへのアクセスを提供し、EJBHomeオブジェクトは、EJBのライフサイクルメソッドへのアクセスを提供します。EJB2.0の新機能では、リモートインタフェースの代わりにローカルインタフェースを使用して、同じコンテナ内のBeanが相互にアクセスすることを許可しています。このため、リモート呼び出しのオーバーヘッドを防ぐことができます(新しい2つのローカルインタフェースは、EJBLocalHomeおよびEJBLocalObjectです)。メッセージ駆動型Beanは、どのインタフェースを通じてもアクセスされません。クライアントプログラムはJMSメッセージサーバを通じてのみアクセスされるため、クライアントプログラムではメッセージ駆動型Beanに直接アクセスできません。
開発するコンポーネントは、EJB指定のバージョンおよび開発するEnterprise Beanのタイプによって異なります。各指定に対して何が必要とされるかは、次の表のとおりです。
EJBバージョン |
Beanタイプ |
指定する必要のあるインタフェースまたはクラス |
---|---|---|
EJB1.1 |
エンティティBeanまたはセッションBean |
|
EJB2.0 |
エンティティBeanまたはセッションBean |
|
メッセージ駆動型Bean |
開発するEJBをテストまたは配備するには、次の操作を行う必要があります。
1つのEJB JARファイルにBeanおよびインタフェースをパッケージ化し、 配備記述子を含めます(配備記述子の詳細については、 EJBのパッケージ化を参照してください)。
J2EE互換サーバにEJB JARを配備します ( EJBの配備を参照)。
このサンプルでは、ステートフルセッションBeanのコンポーネントが示されており、次の内容が含まれています。
リモートインタフェース このサンプルについての注記は、次のとおりです。
doCalculation()ビジネスメソッドが含まれているため、クライアントではこのメソッドを呼び出すことができます。
リモートインタフェースのすべてのメソッドが、 java.rmi.RemoteExceptionをスローします。
/** * @(#)SBCalculator.java * SBCalculator is a Stateful session EJB (EJB v1.1). */ import java.rmi.RemoteException; public interface SBCalculator extends javax.ejb.EJBObject { public int doCalculation( int piFirstValue, int piSecondValue ) throws RemoteException; }
ホームインタフェース このサンプルについての注記は、次のとおりです。
create()メソッドは、javax.ejb.CreateExceptionおよびjava.rmi.RemoteExceptionを両方ともスローします。
/** * @(#)SBCalculatorHome.java */ import java.rmi.RemoteException; import javax.ejb.CreateException; public interface SBCalculatorHome extends javax.ejb.EJBHome { public SBCalculator create() throws CreateException, RemoteException; }
Bean実装クラス Bean実装クラスについての注記は、次のとおりです。
ejbActivate()およびejbPassivate()のようなコンテナコールバックメソッドを含みます。これらのメソッドにより、コンテナではBeanを管理できます。
/** * @(#)SBCalculator.java * SBCalculator is a Stateful session EJB (EJB v1.1). */ import javax.ejb.SessionBean; import javax.ejb.SessionContext; import javax.ejb.CreateException; public class SBCalculatorBean implements javax.ejb.SessionBean { protected SessionContext m_sessionContext; public int m_iTotal=0; public void ejbCreate() throws CreateException { } public int doCalculation( int piFirstValue, int piSecondValue ) { int iTotal = piFirstValue + piSecondValue; m_iTotal += iTotal; return m_iTotal; } public void setSessionContext( javax.ejb.SessionContext ctx ) { m_sessionContext = ctx; } public void ejbActivate() { } public void ejbPassivate() { } public void ejbRemove() { } }
Workbenchには、作成するEJBに関する情報の入力を求めるEJBウィザードが装備されています。入力を求められる情報は、次のとおりです。
すべての情報が提供されると、ウィザードによって次のものが構成されます。
EJBのコンポーネントを開発したら、それらのコンポーネントを1つのEJB JARにパッケージ化します。これを行うには、次の操作を実行します。
「配備記述子」は、EJB JARファイルのコンテンツをXMLで記述したものです。このファイルには任意の有効なファイル名を付けて、任意のディレクトリに保存できます。ただし、EJB JARファイルでは、ejb-jar.xmlという名前を付けて、META-INFというディレクトリに保存する必要があります。ejb-jar.xmlファイルは、Sun Enterprise JavaBeans DTDによって指定されている形式に従う必要があります。DTDの詳細については、オンラインリファレンスの J2EE配備記述子を参照してください。
「EJBプロジェクト」の一部としてEJBを作成すると、Workbenchによって EJB配備記述子DTDに準拠した配備記述子が自動的に作成されます。EJBプロジェクトにコンポーネントを追加すると、Workbenchでは、プロジェクトおよび配備記述子の同期化を維持するために配備記述子を更新します。
ejb-jar.xmlファイルを変更および更新するには、Workbench「配備記述子エディタ」を使用します。 配備記述子エディタを使用すると、EJB配備記述子を作成することもできます。
EJBは、EJB JARファイルにパッケージ化される必要があります。EJB JARファイルの作成には、任意のアーカイブツールを使用できます。
Workbenchは、アーカイブプロセスを自動化します。EJBをコンパイルおよびアーカイブするには、Workbenchで[Projects]>[Build and Archive]の順に選択します。
ユーザに対してEJBを使用可能にするには、Novell exteNd Application ServerなどのJ2EEサーバにEJB JARを配備します。これを行うには、次の操作を実行します。
アプリケーションおよびサーバに固有なランタイム配備情報を指定します。
各J2EEサーバには、ランタイム配備情報を指定するための独自の要件があります。たとえば、Novell exteNd Application Serverでは配備計画を使用し、Sun RI (Reference Implementation)ではランタイム配備記述子を使用します。
[Deployment]ダイアログボックスに情報を入力します。
配備情報は、配備する先のサーバによって異なります。選択したサーバに基づいて適切な配備ツールを実行するためにWorkbenchで使用できるJ2EEサーバプロファイルを作成するには、サーバプロファイルダイアログボックスを使用します。
Workbenchにより、複数のJ2EEサーバへの自動配備が行われます。
詳細については、『ツールガイド』の
アーカイブ配備に関する章を参照してください。
優れたEJBアプリケーションを設計するには、優れたデータベースアプリケーションを設計する場合の標準的な手法に従うことに加えて、次のようなEJB固有の手法を使用する必要があります。
![]() ![]() ![]() ![]() ![]() |
開発ガイド 05/16/03 09:21:28 |
Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC, a wholly owned subsidiary of Novell, Inc. All rights reserved.