特集
2004/03/25 18:00 更新


特集:第3回 JBossのインストールから基本的な使い方まで (6/8)


EJBを利用するスタンドアロンアプリケーションを作る

 では次に、EJBを利用するクライアントを作ってみよう。

 今回は、動作原理が分かりやすいスタンドアロンアプリケーションを作ることにする。EJBを利用するスタンドアロンアプリケーションの例は、List 6のようになる。

List 6■スタンドアロンアプリケーションの例

import javax.naming.*;
import java.rmi.*;
import javax.ejb.*;
import javax.rmi.PortableRemoteObject;
import example.ejb.*;
public class ClientTest
{
        public static void main(String args[])
        {
                SampleHome sampleHome;
                try
                {
                        // JNDIを使ってホームインタフェースを得る
                        Context ctx = new InitialContext();
                        Object obj = ctx.lookup("/MyEJB/Sample");
                        sampleHome = (SampleHome)PortableRemoteObject.narrow(obj
, SampleHome.class);
                }
                catch (NamingException e)
                {
                        System.out.println(e.toString());
                        return;
                }
                // createメソッドを呼び出して
                // EJBObjectオブジェクトを得る
                Sample sample;
                try
                {
                        sample = sampleHome.create();
                }
                catch (CreateException e)
                {
                        System.out.println(e.toString());
                        return;
                }
                catch (RemoteException e)
                {
                        System.out.println(e.toString());
                        return;
                }
                // ビジネスロジックのメソッドを呼び出す
                try
                {
                        int a, b, result;
                        a = 10;
                        b = 20;
                        result = sample.addData(a, b);
                        System.out.println(a + "+" + b + "=" + result);
                }
                catch (RemoteException e)
                {
                        System.out.println(e.toString());
                }
                sample = null;
        }
}

JNDI検索後にホームオブジェクトを取得する

 Enterprise Beanを使う場合、最初の手順は、JNDIを検索してホームオブジェクトを得ることになる。JNDIから検索してホームオブジェクトを得るには、まず、次のように、InitialContextオブジェクトを作り、lookupメソッドを呼び出す。

 この時、lookupメソッドの引数に与えるのは、先に設定したEnterprise BeanのJNDI名だ。

Context ctx = new InitialContext();
Object obj = ctx.lookup("/MyEJB/Sample");


ここではグローバルJNDI名(JNDI ViewでGlobal JNDI Namespaceに表示される名前)でアクセスしているが、WebアプリケーションからEJBを利用する場合には、「java:comp/env/」から始まる環境ネーミングコンテキスト(ENC:Environment Naming Context)を利用する方法もある。

 lookupメソッドの戻り値を得たならば、PortableRemoteObjectクラスのnarrowメソッドを呼び出し、適切な型にキャストする。今回は、ホームインタフェースは、SampleHomeインタフェースとして実装しているので、SampleHomeインタフェースにキャストすればよい。

sampleHome = (SampleHome)PortableRemoteObject.narrow(obj, SampleHome.class);

前のページ | 1 2 3 4 5 6 7 8 | 次のページ

[大澤文孝,ITmedia]

Copyright © ITmedia, Inc. All Rights Reserved.