ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

J2EEについて

J2EEの構成

 J2EEとは、Java2 platform Enterprise Editionの略で、セッション管理、トランザクション処理、データベース処理、セキュリティなどに対応した、J2SEの大規模システム向けの環境です。  J2EEでは、サーブレットや、JSPなども使えます。  業務プログラムなどのビジネスロジックは、EJB部品を組み合わせたEJBコンテナとして提供されます。
 これらのサービスは、JNDIによって名前解決されます。

         Webサ−バ                 アプリケーションサ−バ
 +-------------------------+       +---------------------+
 | +-----Webコンテナ-----+ | (RMI) | +---EJBコンテナ---+ |
 | | +-------+ +-------+ | | IIOP  | | +-----+ +-----+ | |
 | | |Servlet| |  JSP  | |---------->| | EJB | | EJB | | |
 | | +-------+ +-------+ | |       | | +-----+ +-----+ | |
 | +---------------------+ |       | +-----------------+ |
 |   +-------+             |       |                     |
 |   | JNDI  |             |       +---------------------+
 |   +-------+             |
 +-------------------------+

 J2EE 1.2には、以下のクラスが含まれています。

javax.rmi           RMI/IIOP 1.0
javax.sql           JDBC 2.0
javax.naming        JNDI 1.2(Java Naming and Directory Interface)
javax.servlets      Servlet 2.2
javax.servlets.jsp  JSP 1.1(JavaServer Pages)
javax.mail          JavaMail 1.1
javax.activation    JavaBeans Activation Framework 1.0
javax.ejb           EJB 1.1(Enterprise JavaBeans)
javax.transaction   JTA 1.0(Java Transaction API)
javax.jms           JMS 1.0(Java Message Service)

EJB

EJBの特徴

 EJBとは、Enterprise Java Beansの略で、以下の特徴があります。

EJBの種類

 EJBには、以下の種類があります。

EJBの構成

 Session BeanとEntity Beanを使ったシステム構成
            Webサーバ          アプリケーションサーバ
           +---------+   +--------------------------------+
+------+   |+-------+|   |+-----------+ -->1 +-----------+|
|client|-->||servlet||-->||SessionBean| -->2 |EntityBean1||
+------+   |+-------+|   |+-----------+ -->3 +-----------+|   +--+
           |         |                       |EntityBean2||-->|DB|
+------+   |+-------+|   |+-----------+ -->1 +-----------+|   +--+
|client|-->||servlet||-->||SessionBean| -->2 |EntityBean3||
+------+   |+-------+|   |+-----------+ -->3 +-----------+|
           +---------+   +--------------------------------+

SessionBeanのライフサイクル

 SessionBeanのライフサイクルは、以下のようになります。 この状態が遷移するときに、EJBの種類により決められたメソッドが呼ばれます。
 EJBを提供する場合は、このメソッドに対応する処理を記述することになります。

ステートフルSessionBeanのライフサイクル

                [未生成]
(create)           ↓↑ (remove)
 setSessionContext ↓↑ ejbRemove
 ejbCreate         ↓↑
                [活性状態/ready]
 ejbPassivate      ↓↑ ejbActivate
                [非活性状態/passive]スワッピング

ステートレスSessionBeanのライフサイクル

                [未生成]
 setSessionContext ↓↑ ejbRemove
 ejbCreate         ↓↑
                [活性状態/ready]

EJBの利用

 EJBを呼び出す場合は、以下のようなコーディングとなります。 EJBでは、JNDIを利用し、名前解決をする必要があります。 JNDIには、サービスプロバイダという概念があり、LDAPやRMIなどのプロバイダを選択することができます。 JNDIで名前解決するためには、Contextを作成し、lookupメソッドを発行します。

import java.util.*;
import javax.naming.*;

// LDAPの場合
icf = 'com.sun.jndi.ldap.LdapCtxFactory';
url = 'ldap://localhost:389/c=jp/o=ash';
jndiName = 'JNDI名';

// WebLogicServerの場合
icf = 'weblogic.jndi.WLInitialContextFactory';
url = 't3://localhost:7001/examples/アプリケーション名';
jndiName = 'JNDI名';

// JNDI名から、ホームオブジェクトを取得
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, icf);
p.put(Context.PROVIDER_URL, url);
Context ctx = new InitialContext(p);
Object home = ctx.lookup(jndiName);

// createし、リモートオブジェクトを作成
EJBクラス名 EJB名 = (EJBクラス名) home.create();

// EJBのメソッドの呼び出し
EJB名.メソッド名();

// EJBオブジェクトの削除
EJB名.remove();


Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp