ページの先頭行へ戻る
Interstage Studio Java EEワークベンチユーザーズガイド

3.3.5 EJBクライアントを作成する

ここでは、Session Beanのビジネスメソッドを呼び出すクライアント、および、Message-driven Beanにメッセージを送信するクライアントの作成について説明します。

3.3.5.1 Session Beanを呼び出すクライアントを作成する

Session Beanを呼び出すクライアントの作成に特別な定義ファイルは必要ありません。クライアントとなるJavaクラス(サーブレットなど)に、Session Beanのビジネスインタフェースを取得する処理と、それを用いてビジネスメソッドを呼び出す処理を記述します。

ビジネスインタフェースの取得

Dependency Injectionによって簡単にビジネスインタフェースを取得することができます。
ビジネスインタフェースを取得する場合には、以下のように@EJBアノテーションを使用します。

EJBアノテーションの使用例

@EJB
private Calc calc;

記述例

説明

ejb/Calc

Session Beanが対応付けられているJNDI名を指定します。

Calc

ビジネスインタフェースです。(ローカルインタフェースです。)

Calc#add(int, int)

ビジネスメソッドです。

注意

Dependency Injectionは、サーブレットやEJBなどJava EEコンテナで管理されているJava EEコンポーネントでしか使用することができません。それ以外のクラスでは、JNDIのlookupによってオブジェクトを取得します。
詳細は、"8.2.2 JNDIのlookupによるオブジェクトの取得について"を参照してください。

ビジネスメソッドの呼び出し

ビジネスメソッドを呼び出すには、取得したビジネスインタフェースを利用してメソッドを呼び出します。

ビジネスメソッドの呼び出し例

int result = calc.add(100,200);

3.3.5.2 Message-driven Beanにメッセージを送信するクライアントを作成する

Message-driven Beanにメッセージを送信するクライアントの作成に特別な定義ファイルは必要ありません。クライアントとなるJavaクラス(サーブレットなど)に、Message-driven BeanのJMSコネクションファクトリなどを取得する処理と、それを用いてメッセージを送信する処理を記述します。

ここではPoint-To-PointモデルのMessage-driven Beanにメッセージを送信する場合について説明します。

JMSコネクションファクトリおよびJMS Destinationの取得

Dependency Injectionによって簡単にJMSコネクションファクトリやJMS Destinationを取得することができます。
JMSコネクションファクトリやJMS Destinationを取得する場合には、以下のように@Resourceアノテーションを使用します。

Resourceアノテーションの使用例

@Resource(name="jms/QueueCF001")
private QueueConnectionFactory qcf;
@Resource(name="jms/Queue")
private Queue queue;

記述例

説明

jms/QueueCF001

JMSコネクションファクトリ名

jms/Queue

JMS Destination名

注意

Dependency Injectionは、サーブレットやEJBなどJava EEコンテナで管理されているJava EEコンポーネントでしか使用することができません。それ以外のクラスでは、JNDIのlookupによってオブジェクトを取得します。
詳細は、"8.2.2 JNDIのlookupによるオブジェクトの取得について"を参照してください。

メッセージの送信

JMSコネクションファクトリおよびJMS Destinationを取得したあとのメッセージの送信手順はEJB 2.1までのものと同じです。以下にその例を示します。

メッセージ送信の例

// connection, session, senderの作成
QueueConnection connection = qcf.createQueueConnection();
QueueSession session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
QueueSender sender = session.createSender(queue);
// テキストメッセージの送信
TextMessage msg = session.createTestMessage();
msg.setText("Hello World!");
sender.send(msg);
// クローズ
connection.close();