特集
2004/01/30 18:55:00 更新


特集:第1回 EJBの仕組みを知ろう (4/6)


Enterprise Beanインスタンス作成のためのホームオブジェクト

 Enterprise Beanのインスタンスを作るのは、ホームオブジェクトの役割だ。EJBを利用するプログラム(以下クライアントと呼ぶ)は、まず、最初にJNDI(Java Naming and Directory Interface)を使い、ホームオブジェクトを探し出す仕組みを持つ。


ここでのクライアントとはユーザーの端末のことではなく、EJBを利用するプログラムのことだ。JSPやサーブレットからEJBを利用するのであれば、JSPやサーブレットがクライアントに相当する。


JNDIとは、Javaにおけるディレクトリサービスであり、名前から値やオブジェクトを検索できる仕組みだ。JNDIを使ったホームオブジェクトの取得については、後のサンプルで詳しく解説する。EJBの開発者は、あらかじめJNDIに、ホームインタフェースと呼ばれるインタフェースを登録しておく。そうしておくことで、クライアントはJNDIを検索する際、ホームオブジェクトを得ることができるようになる。

 ホームインタフェースは、EJBHomeインタフェースから継承(extends)したインタフェースだ。ホームインタフェースに用意すべきメソッドは、Enterprise Beanの種類によって異なる。主なメソッドには、次のようなものがある。

  • createメソッド

 Beanクラスのインスタンスを作る。

  • removeメソッド

 Beanクラスのインスタンスを削除する。

  • findxxxメソッド(xxxは任意の名前)

 条件に合致するBeanクラスのインスタンスを返す。エンティティBeanの場合、データベースから条件に合致するレコードを検索し、その結果レコードに対応するエンティティBeanを得る場合に用いる。

 ホームオブジェクトを得たクライアントは、ホームオブジェクトのcreateメソッドを呼び出す。これにより、Beanクラスのインスタンス――Beanオブジェクト――が作られる。この時、BeanオブジェクトのejbCreateメソッドが呼び出される。ejbCreateメソッドには、Beanの初期化の処理を実装しておくことが多い(初期化が不要であれば、実装が空のejbCreateメソッドで構わない)。

 ここではcreateメソッドを呼び出した時、ejbCreateメソッドが呼び出されると説明したが、その他のメソッドについても同様に、ホームオブジェクトのxxxというメソッドが呼び出されると、BeanのejbXxxというメソッドが呼び出される仕組みになっている。

 たとえばホームオブジェクトにremoveメソッドがある場合、removeメソッドを呼び出すと、BeanのejbRemoveメソッドが呼び出されるという具合だ。


インスタンスの作り方は、Enterprise Beanの種類によって異なる。たとえばエンティティBeanの場合には、createメソッドではなくfindxxxメソッドを使ってインスタンスを作る。エンティティBeanの場合の手順については、次回以降、改めて説明する。


場合によっては、新規にインスタンスが作られるのではなく、EJBコンテナ内に存在する既存のインスタンスが使い回されることもある。その詳細は、後述する。

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

[大澤文孝,ITmedia]

Copyright © ITmedia, Inc. All Rights Reserved.