ヘッダーをスキップ

Oracle Containers for J2EE Enterprise JavaBeans開発者ガイド
10g(10.1.3.1.0)

B31852-03
目次
目次
索引
索引

戻る 次へ

19 JNDIサービスの構成

この章の内容は次のとおりです。

詳細は、次を参照してください。

環境参照の構成

実行時にJNDIを使用してEJBから重要なリソースにアクセスする前に、それらのリソースへの環境参照を定義する必要があります。環境参照は静的で、Beanによって変更できません。

この項では次の参照の構成について説明します。

EJB 3.0では、環境参照を定義するかわりにアノテーション、リソース・インジェクションおよびデフォルトのJNDI名(クラス名およびインタフェース名に基づく)を使用できます。別の方法として、OC4J固有のデプロイメント・ディスクリプタまたはOC4J固有のアノテーションを使用して環境参照を定義できます。

EJB 2.1では、<ejb-ref>または<ejb-local-ref>要素を適切なデプロイメント・ディスクリプタに定義する必要があります。

どちらの場合も、環境参照を定義する場合は、実際のJNDI名を使用するか、関連付けられている論理名を使用してデプロイの柔軟性を高めることができます。

詳細は、次を参照してください。

EJB環境参照

クライアントのロールで動作している1つのEnterprise Bean(ソースEnterprise Beanと呼ぶ)が別のEnterprise Bean(ターゲットEnterprise Beanと呼ぶ)にアクセスするには、その前にソースEnterprise Beanのデプロイメント・ディスクリプタでターゲットEnterprise BeanへのEJB参照を定義する必要があります。


注意

EJB 3.0では、ターゲットEnterprise Beanへの環境参照は不要です。リソース・インジェクションを使用して、ターゲットEnterprise Beanに直接アクセスできます(「EJB 3.0 Enterprise Beanへのアクセス」を参照)。 


詳細は、次を参照してください。

リソース・マネージャのコネクション・ファクトリ環境参照

JDBCデータソース、JMSトピックまたはキュー、Java mail、HTTP URLなどのサービスへの接続を提供するリソース・マネージャのコネクション・ファクトリへの環境参照を定義できます。これらの参照は、提供する実際のリソース・マネージャ・コネクション・ファクトリへのデプロイ時に、そのOC4Jがバインドする論理名です。


注意

EJB 3.0では、リソース・マネージャのコネクション・ファクトリへの環境参照は不要です。リソース・インジェクションを使用して、リソース・マネージャのコネクション・ファクトリに直接アクセスできます(「EJB 3.0リソース・マネージャのコネクション・ファクトリのルックアップ」を参照)。 


リソース・マネージャのコネクション・ファクトリにアクセスする各クライアントについて、クライアント・ソース・コードにこれを注入するか、クライアントのデプロイメント・ディスクリプタに環境参照を定義する必要があります。

詳細は、次を参照してください。

環境変数の環境参照

環境変数を環境参照とともに定義して、JNDIを使用して環境変数値をアクセス可能にできます。

詳細は、「環境変数への環境参照の構成」を参照してください。

Webサービス環境参照

Webサービスを環境参照とともに定義して、JNDIを使用してWebサービスをアクセス可能にできます。

詳細は、「Webサービスへの環境参照の構成」を参照してください。

永続性コンテキスト参照

エンティティ・マネージャへの推奨されるアクセス方法は、アノテーションおよび依存性注入を使用することです(「OC4Jのデフォルト・エンティティ・マネージャの取得」および「JNDIを使用したエンティティ・マネージャの取得」を参照)。

アノテーションおよびインジェクションをサポートしないクラス(ヘルパー・クラスおよびWebクライアント)でエンティティ・マネージャを取得するには、最初に永続性コンテキスト参照を定義してから、JNDIを使用してエンティティ・マネージャをルックアップする必要があります。

詳細は、次を参照してください。

EJB環境参照を構成する場所

環境参照を使用することを選択した場合、EJB参照を構成する場所は、表19-1に示すようにクライアントのタイプによって決まります。

表19-1    クライアント・タイプ別のデプロイメント・ディスクリプタ 
クライアント・タイプ  説明  デプロイメント・ディスクリプタ  OC4J固有のデプロイメント・ディスクリプタ 

EJB 

コンテナ内からEnterprise Beanを起動する別のEnterprise Bean 

ejb-jar.xml 

orion-ejb-jar.xml 

スタンドアロン・クライアント 

コンテナの外部からEnterprise Beanを起動するPure Javaクライアント 

application-client.xml 

orion-application-client.xml 

サーブレットまたはJSP 

コンテナの外部からEnterprise Beanを起動するサーブレットまたはJSP 

web.xml 

orion-web.xml 

EJB 3.0でEJB環境参照を定義する場合、OC4J固有のデプロイメント・ディスクリプタのかわりにOC4J固有のアノテーションを使用できます。

論理名を使用する必要があるかどうか

環境参照を定義する場合は、リソースを論理名またはそのJNDI名で識別できます。アプリケーション・アセンブリおよびデプロイの柔軟性を最大にするために、通常はアプリケーション環境で定義する論理名でリソースを参照することによりEJBアプリケーションを開発します。このように間接的に設定することにより、Bean開発者は、アプリケーションのアセンブルおよびデプロイの方法によって変化する可能性のある実際の名前を指定せずに、Enterprise Bean、他のリソース(JDBC DataSourceなど)および環境変数を参照できます。この章の手順では、論理名またはJNDI名の構成方法を説明します。

リモートEJBへの環境参照の構成: クラスタ化または結合されたWeb層およびEJB層

同じOC4Jインスタンス上にWeb層とEJB層の両方を含むクラスタ化されたOC4Jアーキテクチャまたは単一インスタンスのOC4Jアーキテクチャでは、次のいずれかの方法を使用してターゲットEnterprise Beanのリモート・インスタンスへのEJB参照を定義できます(次の方法は、後の方がアセンブリおよびデプロイの柔軟性が高くなるように配列されています)。

Web層とEJB層が異なるホスト上の個別のOC4Jインスタンスにデプロイされる非クラスタ化アーキテクチャの場合は、「リモートEJBへの環境参照の構成: クラスタ化されていない個別のWeb層およびEJB層」を参照してください。

ターゲットEnterprise Beanのルックアップの詳細は、第29章「クライアントからのEnterprise Beanへのアクセス」を参照してください。

クライアントのejb-refの構成: インダイレクションなし

Beanインタフェースが1つのみの場合(ただ1つのセッションBeanのみがインタフェースCart.classを使用する場合など)、またはアセンブリおよびデプロイの柔軟性を提供するインダイレクションを使用しない場合、このオプションを選択します。

  1. 適切なクライアント・デプロイメント・ディスクリプタの<ejb-ref>要素を定義し(「EJB環境参照を構成する場所」を参照)、例19-1に示すように次のサブ要素を構成します。

    • <ejb-ref-name>: ターゲットEnterprise Beanの実際の名前

    • <ejb-ref-type>: ターゲットEnterprise Beanのタイプ(SessionまたはEntityのいずれか)

    • <home>: ターゲットEnterprise Beanのリモート・ホーム・インタフェースのパッケージ名とクラス名

    • <remote>: ターゲットEnterprise Beanのリモート・コンポーネント・インタフェースのパッケージ名とクラス名

      例19-1    ejb-ref-nameの構成

      <ejb-ref>
       <ejb-ref-name>myBeans/BeanA</ejb-ref-name>
       <ejb-ref-type>Session</ejb-ref-type>
       <home>myBeans.BeanAHome</home>
       <remote>myBeans.BeanA</remote>
      </ejb-ref>
      
      

クライアントのejb-refの構成: ejb-linkを使用したインダイレクションの解決

Beanインタフェースが1つのみではない場合、またはアセンブリおよびデプロイの柔軟性を提供するインダイレクションを使用する場合、このオプションを選択します。

  1. 適切なクライアント・デプロイメント・ディスクリプタの<ejb-ref>要素を定義し(「EJB環境参照を構成する場所」を参照)、例19-2に示すように次のサブ要素を構成します。

    • <ejb-ref-name>: ターゲットEnterprise Beanの論理名

    • <ejb-ref-type>: ターゲットEnterprise Beanのタイプ(SessionまたはEntityのいずれか)

    • <home>: ターゲットEnterprise Beanのリモート・ホーム・インタフェースのパッケージ名とクラス名

    • <remote>: ターゲットEnterprise Beanのリモート・コンポーネント・インタフェースのパッケージ名とクラス名

    • <ejb-link>: ターゲットBeanの実際の名前

      例19-2    ejb-linkにより解決される論理名でのejb-ref-nameの構成

      <ejb-ref>
       <ejb-ref-name>ejb/nextVal</ejb-ref-name>
       <ejb-ref-type>Session</ejb-ref-type>
       <home>myBeans.BeanAHome</home>
       <remote>myBeans.BeanA</remote>
       <ejb-link>myBeans/BeanA</ejb-link>
      </ejb-ref>
      
      

クライアントのejb-refの構成: orion-ejb-jar.xmlのejb-ref-mappingを使用したインダイレクションの解決

次の条件が満たされる場合にこのオプションを使用します。

  1. 適切なクライアント・デプロイメント・ディスクリプタの<ejb-ref>要素を定義し(「EJB環境参照を構成する場所」を参照)、例19-3に示すように次のサブ要素を構成します。

    • <ejb-ref-name>: ターゲットEnterprise Beanの論理名

    • <ejb-ref-type>: ターゲットEnterprise Beanのタイプ(SessionまたはEntityのいずれか)

    • <home>: ターゲットEnterprise Beanのリモート・ホーム・インタフェースのパッケージ名とクラス名

    • <remote>: ターゲットEnterprise Beanのリモート・コンポーネント・インタフェースのパッケージ名とクラス名

      例19-3    ejb-ref-mappingにより解決される論理名でのejb-ref-nameの構成

      <ejb-ref>
       <ejb-ref-name>ejb/nextVal</ejb-ref-name>
       <ejb-ref-type>Session</ejb-ref-type>
       <home>myBeans.BeanAHome</home>
       <remote>myBeans.BeanA</remote>
      </ejb-ref>
      
      
  2. orion-ejb-jar.xmlデプロイメント・ディスクリプタ内で、例19-4に示すように論理名をターゲットBeanの実際の名前にマッピングする<ejb-ref-mapping>要素を定義します。

    例19-4    ejb-ref-mappingでの実際の名前への論理名のマッピング

    <ejb-ref-mapping name="ejb/nextVal" location="myBeans/BeanA"/>
    
    

    図19-1に示すように、<ejb-ref-mapping>要素では、name属性を<ejb-ref-name>と一致するように構成し、location属性をターゲットBeanの実際の名前で構成します。例19-4では、論理名ejb/nextValは、ターゲットBean myBeans/BeanAの実際の名前にマッピングされます。

    図19-1    ejb-ref-nameとejb-ref-mappingの関連付け


    画像の説明

    OC4Jは、論理名を、クライアント・サイドの実際のJNDI名にマッピングします。サーバー・サイドでJNDI名を受信し、これをJNDIツリー内で解決します。

リモートEJBへの環境参照の構成: クラスタ化されていない個別のWeb層およびEJB層

一般的なJava EEアプリケーション・アーキテクチャでは、非クラスタ化環境でWeb層を1つのOC4Jインスタンスにデプロイし、EJB層を別のホスト上にあるもう1つのOC4Jインスタンスにデプロイします。

このアーキテクチャでリモートEnterprise Beanにアクセスするには、コンテキストの作成時にWeb層コードの必須JNDIプロパティを設定する必要があります(「初期コンテキストでのJNDIプロパティの設定」を参照)。これらのハードコードされたプロパティにより、テスト環境から本番環境への移行などの際に移植性の問題が発生する可能性があります。

OC4J固有のデプロイXML(「デプロイXMLの使用方法」を参照)を使用すると、リモートEnterprise Beanへの参照を、必須のJNDIコンテキスト変数を含むJNDIプロパティ・ファイルと関連付けることができます。これにより、アセンブリとデプロイが容易になります。

図19-2はJSPまたはサーブレット・クライアントのアーキテクチャを示しており、図19-3はEJBクライアントのアーキテクチャを示しています。

図19-2    Web層およびEJB層のリモートEJBアクセス: JSPまたはサーブレット・クライアント


画像の説明

図19-3    Web層およびEJB層のリモートEJBアクセス: EJBクライアント


画像の説明

JNDIプロパティ・ファイルの詳細は、「JNDIプロパティ・ファイルでのJNDIプロパティの設定」を参照してください。

デプロイXMLの使用方法

OC4J固有の要素<ejb-ref-mapping>を使用して、リモートEnterprise Beanへの参照を必須のJNDIコンテキスト変数を含むJNDIプロパティ・ファイルと関連付けるには、Web層のOC4Jインスタンスを次のように構成します。

  1. 適切なクライアント・デプロイメント・ディスクリプタの<ejb-ref>要素を定義し(「EJB環境参照を構成する場所」を参照)、例19-5に示すように次のサブ要素を構成します。

    • <ejb-ref-name>: ターゲットEnterprise Beanの論理名

    • <ejb-ref-type>: ターゲットEnterprise Beanのタイプ(SessionまたはEntityのいずれか)

    • <home>: ターゲットEnterprise Beanのリモート・ホーム・インタフェースのパッケージ名とクラス名

    • <remote>: ターゲットEnterprise Beanのリモート・コンポーネント・インタフェースのパッケージ名とクラス名

      例19-5    ejb-ref-mappingにより解決される論理名でのejb-ref-nameの構成

      <ejb-ref>
       <ejb-ref-name>ejb/emp</ejb-ref-name>
       <ejb-ref-type>Session</ejb-ref-type>
       <home>myBeans.EmployeeBeanHome</home>
       <remote>myBeans.EmployeeBean</remote>
      </ejb-ref>
      
      

    このアーキテクチャにおいて、クライアント・デプロイメント・ディスクリプタはWeb層のOC4Jインスタンス上にあります。リモートEnterprise Beanのクライアントは、次のいずれかです。

    • Web層にデプロイされたJSPまたはサーブレット: web.xmlファイルを使用します。

    • Web層にデプロイされたEnterprise Bean: ejb-jar.xmlファイルを使用します。

  2. クライアントのタイプに応じ、orion-web.xmlまたはorion-ejb-jar.xmlデプロイメント・ディスクリプタ内で、例19-6に示すように次の操作を実行する<ejb-ref-mapping>要素を定義します。

    • ターゲットBeanの実際の名前(myBeans/EmployeeBean)に論理名(ejb/emp)をマッピングします。

    • ターゲットEJBインスタンスがリモート・ホストに存在することを指定します(remote-server-ref="true")。

    • 参照をJNDIプロパティ・ファイルと関連付けます(jndi-properties-file="empjndi.properties")。このプロパティ・ファイルには、ターゲットEJBインスタンスがデプロイされているリモート・ホストへのアクセス時にクライアントが必要とするJNDIコンテキスト変数が含まれます。

      例19-6    リモート・ターゲットEJBに対応するejb-ref-mappingでの実際の名前への論理名のマッピング

      <ejb-ref-mapping
          name="ejb/emp"
          location="myBeans/EmployeeBean"
          remote-server-ref="true"
          jndi-properties-file="empjndi.properties"
      />
      
      

    図19-1に示すように、<ejb-ref-mapping>要素では、name属性を<ejb-ref-name>と一致するように構成し、location属性をターゲットBeanの実際の名前で構成します。例19-4では、論理名ejb/empは、ターゲットBean myBeans/EmployeeBeanの実際の名前にマッピングされます。

    図19-4    リモート・ターゲットEJBに対応するejb-ref-nameとejb-ref-mappingの関連付け


    画像の説明

    Web層のクライアント(Web層にデプロイされたJSP、サーブレットまたはEnterprise Bean)が(インジェクションまたはJNDIルックアップを使用して)リモート・ターゲットEnterprise Beanにアクセスする場合、Web層のOC4Jインスタンスは、(Web層のOC4Jインスタンスのweb.xmlまたはejb-jar.xmlファイルで指定された)論理名を(Web層のOC4Jインスタンスのorion-web.xmlまたはorion-ejb-jar.xmlファイルで指定された)実際の名前にマッピングします。Web層のOC4Jインスタンスは、EJB層のOC4Jインスタンスにアクセスするために<ejb-ref-mapping>要素で指定されたJNDIプロパティ・ファイルを使用し、実際の名前をEJB層のOC4Jインスタンス上のターゲットEnterprise Beanに解決します。

ローカルEJBへの環境参照の構成

次のいずれかの方法を使用してターゲットEnterprise Beanのローカル・インタフェースへのEJB参照を定義できます(次の方法は、後の方がアセンブリおよびデプロイの柔軟性が高くなるように配列されています)。

ターゲットEnterprise Beanのルックアップの詳細は、第29章「クライアントからのEnterprise Beanへのアクセス」を参照してください。

クライアントのejb-local-refの構成: インダイレクションなし

Beanインタフェースが1つのみの場合(ただ1つのセッションBeanのみがインタフェースCart.classを使用する場合など)、またはアセンブリおよびデプロイの柔軟性を提供するインダイレクションを使用しない場合、このオプションを選択します。

  1. 適切なクライアント・デプロイメント・ディスクリプタの<ejb-local-ref>要素を定義し(「EJB環境参照を構成する場所」を参照)、例19-1に示すように次のサブ要素を構成します。

    • <ejb-ref-name>: ターゲットEnterprise Beanの実際の名前

    • <ejb-ref-type>: ターゲットBeanのタイプ(SessionまたはEntity

    • <local-home>: ターゲットBeanのローカル・ホーム・インタフェースのパッケージ名とクラス名

    • <local>: ターゲットBeanのローカル・コンポーネント・インタフェースのパッケージ名とクラス名

      例19-7    ejb-local-ref-nameの構成

      <ejb-local-ref>
       <ejb-ref-name>myBeans/BeanA</ejb-ref-name>
       <ejb-ref-type>Session</ejb-ref-type>
       <local-home>myBeans.BeanAHome</home>
       <local>myBeans.BeanA</remote>
      </ejb-ref>
      
      

クライアントのejb-local-refの構成: ejb-linkを使用したインダイレクションの解決

Beanインタフェースが1つのみではない場合、またはアセンブリおよびデプロイの柔軟性を提供するインダイレクションを使用する場合、このオプションを選択します。

  1. 適切なクライアント・デプロイメント・ディスクリプタの<ejb-local-ref>要素を定義し(「EJB環境参照を構成する場所」を参照)、例19-8に示すように次のサブ要素を構成します。

    • <ejb-ref-name>: ターゲットEnterprise Beanの論理名

    • <ejb-ref-type>: ターゲットBeanのタイプ(SessionまたはEntity

    • <local-home>: ターゲットBeanのローカル・ホーム・インタフェースのパッケージ名とクラス名

    • <local>: ターゲットBeanのローカル・コンポーネント・インタフェースのパッケージ名とクラス名

    • <ejb-link>: ターゲットBeanの実際の名前

      例19-8    ejb-linkにより解決される論理名でのejb-ref-nameの構成

      <ejb-local-ref>
       <ejb-ref-name>ejb/nextVal</ejb-ref-name>
       <ejb-ref-type>Session</ejb-ref-type>
       <local-home>myBeans.BeanAHome</home>
       <local>myBeans.BeanA</remote>
       <ejb-link>myBeans/BeanA</ejb-link>
      </ejb-ref>
      
      

クライアントのejb-local-refの構成: orion-ejb-jar.xmlのejb-ref-mappingを使用したインダイレクションの解決

次の条件が満たされる場合にこのオプションを使用します。

  1. 適切なクライアント・デプロイメント・ディスクリプタの<ejb-ref>要素を定義し(「EJB環境参照を構成する場所」を参照)、例19-9に示すように次のサブ要素を構成します。

    • <ejb-ref-name>: ターゲットEnterprise Beanの論理名

    • <ejb-ref-type>: ターゲットBeanのタイプ(SessionまたはEntity

    • <local-home>: ターゲットBeanのローカル・ホーム・インタフェースのパッケージ名とクラス名

    • <local>: ターゲットBeanのローカル・コンポーネント・インタフェースのパッケージ名とクラス名

      例19-9    ejb-ref-mappingにより解決される論理名でのejb-ref-nameの構成

      <ejb-local-ref>
       <ejb-ref-name>ejb/nextVal</ejb-ref-name>
       <ejb-ref-type>Session</ejb-ref-type>
       <local-home>myBeans.BeanAHome</home>
       <local>myBeans.BeanA</remote>
      </ejb-ref>
      
      
  2. orion-ejb-jar.xmlデプロイメント・ディスクリプタ内で、例19-10に示すように論理名をターゲットBeanの実際の名前にマッピングする<ejb-ref-mapping>要素を定義します。

    例19-10    ejb-ref-mappingでの実際の名前への論理名のマッピング

    <ejb-ref-mapping name="ejb/nextVal" location="myBeans/BeanA"/>
    
    

    図19-5に示すように、<ejb-ref-mapping>要素では、name属性を<ejb-ref-name>と一致するように構成し、location属性をターゲットBeanの実際の名前で構成します。例19-10では、論理名ejb/nextValは、ターゲットBean myBeans/BeanAの実際の名前にマッピングされます。

    図19-5    ejb-ref-nameとejb-ref-mappingの関連付け


    画像の説明

    OC4Jは、論理名を、クライアント・サイドの実際のJNDI名にマッピングします。サーバー・サイドでJNDI名を受信し、これをJNDIツリー内で解決します。

JDBCデータソース・リソース・マネージャのコネクション・ファクトリへの環境参照の構成

デプロイXMLを使用してJDBCのDataSource用の環境要素を作成することにより、JDBCを通じてデータベースにアクセスできます(「デプロイXMLの使用方法」を参照)。


注意

EJB 3.0では、リソース・マネージャのコネクション・ファクトリへの環境参照は不要です。リソース・インジェクションを使用して、リソース・マネージャのコネクション・ファクトリに直接アクセスできます(「EJB 3.0リソース・マネージャのコネクション・ファクトリのルックアップ」を参照)。 


リソース・マネージャのコネクション・ファクトリのルックアップの詳細は、次を参照してください。

デプロイXMLの使用方法

デプロイXMLを使用してJDBC DataSourceへの参照を定義するには、次のようにします。

  1. data-sources.xmlファイルで、目的のDataSourceを定義し、その実際のJNDI名を指定します(第20章「データソースの構成」を参照)。

    この例では、DataSourceが、/test/OrderDataSourceというJNDI名でdata-sources.xmlファイルで指定されていることを前提としています。

  2. 適切なクライアント・デプロイメント・ディスクリプタの<resource-ref>要素を定義し(「EJB環境参照を構成する場所」を参照)、例19-11に示すように次のサブ要素を構成します。

    • <res-ref-name>: JDBCデータソースの論理名。

      参照名にはjdbcという接頭辞を付けることをお薦めしますが、これは必須ではありません。Beanのソース・コードでこの参照をルックアップするために初期コンテキストを使用する場合は(例19-30を参照)、必ず論理名にjava:comp/env/という接頭辞を付けます(java:comp/env/jdbc/OrderDBなど)。

    • <res-type>: リソースのJavaタイプ。JDBC DataSourceオブジェクトの場合、これはjavax.sq.DataSourceです。

    • <res-auth>: 認証情報のソース(ApplicationまたはContainer)。

      例19-11    ejb-jar.xmlでの<resource-ref>の構成

      <enterprise-beans>
      ...
          <resource-ref>
              <res-ref-name>jdbc/OrderDB</res-ref-name>
              <res-type>javax.sq.DataSource</res-type>
              <res-auth>Application</res-auth>
          </resource-ref>

      </enterprise-beans>

  3. orion-ejb-jar.xmlデプロイメント・ディスクリプタで、例19-12に示すように<resource-ref-mapping>を定義して次の属性を構成します。

    • name: (ejb-jar.xmlに定義された)データソースの論理名

    • location: (data-sources.xmlに定義された)データソースの実際の名前

      例19-12    <resource-ref-mapping>を使用した論理名から実際のJDBCデータソース・リソース・マネージャのコネクション・ファクトリへのマッピング

      <resource-ref-mapping
          name="jdbc/OrderDB"
          location="test/OrderDataSource"
      />

     

    図19-6に、name属性がjdbc/OrderDBejb-jar.xmlで定義された論理名)に設定され、
    location属性がtest/OrderDataSourcedata-sources.xmlで定義されたJNDI名)に設定された<resource-ref-mapping>要素を示します。

    図19-6    論理名から実際のJDBCデータソース・リソース・マネージャのコネクション・ファクトリへのマッピング


    Beanの実装では、論理名java:comp/env/jdbc/OrderDBを使用して、このデータソースのJDBCデータソース・リソース・マネージャのコネクション・ファクトリをルックアップできます(例19-30を参照)。

JMS宛先リソース・マネージャのコネクション・ファクトリへの環境参照の構成(JMS 1.1)

JMS 1.0の場合と同じように(「JMS宛先またはコネクション・リソース・マネージャのコネクション・ファクトリへの環境参照の構成(JMS 1.0)」を参照)、JMS 1.1を使用して、JMSコネクション・リソース・マネージャのコネクション・ファクトリへの環境参照を定義します。ただし、クライアント・デプロイメント・ディスクリプタの<message-destination-ref>要素および対応するOC4J固有のデプロイメント・ディスクリプタの<message-destination-ref-mapping>要素を使用してJMS宛先への環境参照を定義できます(「EJB環境参照を構成する場所」を参照)。

<message-destination-ref-mapping>を使用して、クライアント<message-destination-ref-name>をOC4J環境で使用できる別の場所にマッピングします。これにより、メッセージ・コンシューマおよびプロデューサを1つ以上の共通の論理的な宛先にリンクする手段が提供されます。

<message-destination-ref>はすべてのEJBタイプで使用できるため、<message-destination-ref-mapping>はメッセージドリブン・デプロイに限定されません。

詳細は、『Oracle Containers for J2EEサービス・ガイド』の「Oracle Enterprise Messaging Service(OEMS)」を参照してください。


注意

EJB 3.0では、リソース・マネージャのコネクション・ファクトリへの環境参照は不要です。リソース・インジェクションを使用して、リソース・マネージャのコネクション・ファクトリに直接アクセスできます(「EJB 3.0リソース・マネージャのコネクション・ファクトリのルックアップ」を参照)。 


リソース・マネージャのコネクション・ファクトリのルックアップの詳細は、次を参照してください。

JMS宛先またはコネクション・リソース・マネージャのコネクション・ファクトリへの環境参照の構成(JMS 1.0)

JMS宛先(キューまたはトピック)およびJMSコネクション・リソース・マネージャのコネクション・ファクトリには、デプロイXMLを使用してそれらのコネクション・ファクトリへの環境参照を作成することでアクセスできます(「デプロイXMLの使用方法」を参照)。


注意

EJB 3.0では、リソース・マネージャのコネクション・ファクトリへの環境参照は不要です。アノテーションおよびリソース・インジェクションを使用して、リソース・マネージャのコネクション・ファクトリに直接アクセスできます(「EJB 3.0リソース・マネージャのコネクション・ファクトリのルックアップ」を参照)。 


リソース・マネージャのコネクション・ファクトリのルックアップの詳細は、次を参照してください。

デプロイXMLの使用方法

JMS宛先およびJMSコネクション・リソース・マネージャのコネクション・ファクトリを定義するには、次のようにします。

  1. JMSサービス・プロバイダを構成します。

    詳細は、次を参照してください。

  2. JMS宛先およびコネクション・ファクトリのJNDI名を定義します。

    詳細は、次を参照してください。

  3. JMS宛先およびコネクション・ファクトリの論理名を定義します。

    使用するJMSプロバイダのタイプにかかわらず、論理名の定義方法は同じです。

    1. 適切なクライアント・デプロイメント・ディスクリプタに<resource-env-ref>要素を定義し(「EJB環境参照を構成する場所」を参照)、次のサブ要素を構成します。

      • <resource-env-ref-name>: JMS宛先リソース・マネージャのコネクション・ファクトリの論理名。

      • <resource-env-ref-type>: 宛先クラス・タイプ。javax.jms.Queueまたはjavax.jms.Topicです。

      例19-13に、JMSトピック・リソース・マネージャのコネクション・ファクトリの<resource-env-ref>要素を示します。

      例19-13    JMSトピック宛先の<resource-env-ref>

      <resource-env-ref>
        <resource-env-ref-name>rpTestTopic</resource-env-ref-name>  
        <resource-env-ref-type>javax.jms.Topic</resource-env-ref-type>
      </resource-env-ref>
      

    2. 同じクライアント・デプロイメント・ディスクリプタに<resource-ref>要素を定義し、次のサブ要素を構成します。

      • <res-ref-name>: JMSコネクション・リソース・マネージャのコネクション・ファクトリの論理名。

      • <res-type>: コネクション・ファクトリ・クラス・タイプ。javax.jms.QueueConnectionFactoryまたはjavax.jms.TopicConnectionFactoryです。

      • <res-auth>: 認証を行う機能。ContainerまたはBeanです。

      • <res-sharing-scope>: 共有スコープ。ShareableまたはUnshareableです。

      例19-14に、JMSトピック・コネクション・リソース・マネージャのコネクション・ファクトリの<resource-ref>要素を示します。

      例19-14    JMSトピックのコネクション・ファクトリの<resource-ref>

      <resource-ref>
        <res-ref-name>myTCF</res-ref-name>
        <res-type>javax.jms.TopicConnectionFactory</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
      </resource-ref>
      

  4. 論理名を実際のJNDI名にマッピングします。

    1. 対応するOC4J固有のデプロイメント・ディスクリプタ(「EJB環境参照を構成する場所」を参照)で<resource-env-ref-mapping>要素を定義し、そのname属性をJMS宛先論理名(<resource-env-ref>で定義)に、またそのlocation属性をJMSプロバイダの構成時に定義したJNDI名に構成します(手順2を参照)。

      例19-15に、OEMS JMSの<resource-env-ref-mapping>要素を示します。

      例19-15    OEMS JMSの<resource-env-ref-mapping>

      <resource-env-ref-mapping
          name="rpTestTopic"
          location="jms/Topic/rpTestTopic">
      </resource-env-ref-mapping>
      

    2. 同じOC4J固有のデプロイメント・ディスクリプタ(「EJB環境参照を構成する場所」を参照)の<resource-ref-mapping>を定義し、そのname属性をJMSコネクション・ファクトリの論理名(<resource-ref>で定義)に、またそのlocation属性をJMSプロバイダの構成時に定義したJNDI名(手順2を参照)に構成します。

      例19-16に、OEMS JMSの<resource-ref-mapping>要素を示します。

      例19-16    OEMS JMSの<resource-ref-mapping>

      <resource-ref-mapping
          name="myTCF"
          location="jms/Topic/myTCF">
      </resource-ref-mapping>
      

環境変数への環境参照の構成

InitialContextのJNDIルックアップを通じてBeanがアクセスする環境変数を作成できます。これらの変数はejb-jar.xmlファイルの<env-entry>要素で定義します。型は、StringIntegerBooleanDoubleByteShortLongFloatのいずれかです。環境変数の名前は<env-entry-name>サブ要素で定義し、型は<env-entry-type>サブ要素で定義します。初期値は<env-entry-value>サブ要素で定義します。<env-entry-name>java:comp/envコンテキストに対して相対的です。

例19-17に、ejb-jar.xmlファイルでのjava:comp/env/minBalanceおよびjava:comp/env/maxCreditBalanceの環境変数の定義方法を示します。

例19-17    環境変数のejb-jar.xml

<env-entry>
     <env-entry-name>minBalance</env-entry-name>
     <env-entry-type>java.lang.Integer</env-entry-type>
     <env-entry-value>500</env-entry-value>
</env-entry>
<env-entry>
     <env-entry-name>maxCreditBalance</env-entry-name>
     <env-entry-type>java.lang.Integer</env-entry-type>
     <env-entry-value>10000</env-entry-value>
</env-entry>

ejb-jar.xmlファイルで定義した環境変数の値は、name属性がejb-jar.xmlファイルで定義したenv-entry-nameと一致する
env-entry-mapping要素をorion-ejb-jar.xmlファイルに定義することでオーバーライドできます。ejb-jar.xmlファイルで指定された型は変わりません。

図19-7に、minBalance環境変数の値をorion-ejb-jar.xmlファイルでオーバーライドして500に設定する方法を示します。

図19-7    orion-ejb-jar.xmlでのejb-jar.xmlの環境変数のオーバーライド


画像の説明

環境変数のルックアップの詳細は、次を参照してください。

Webサービスへの環境参照の構成

Webサービスには、そのWebサービスを参照するリソース・マネージャのコネクション・ファクトリを作成することでステートレス・セッションBeanからアクセスできます。


注意

EJB 3.0では、Webサービスへの環境参照は不要です。アノテーションおよびリソース・インジェクションを使用して、Webサービスに直接アクセスできます。 


リソース・マネージャのコネクション・ファクトリにアクセスする各クライアントについて、クライアント・ソース・コードにこれを注入するか、クライアントのデプロイメント・ディスクリプタに環境参照を定義する必要があります。

Webサービスへの環境参照を作成するには、次のようにします。

  1. Webサービスの論理名を定義します。

    適切なクライアント・デプロイメント・ディスクリプタに<service-ref>要素を定義し(「EJB環境参照を構成する場所」を参照)、次のサブ要素を構成します。

    • <service-ref-name>: Webサービスの論理名

    • <service-interface>: Webサービス・インタフェース

    例19-18に、Webサービスの<service-ref>要素を示します。

    参照名にはserviceという参照名を付けることをお薦めしますが、これは必須ではありません。Beanコードでは、この参照(例30-5を参照)のルックアップは、常に先頭にjava:comp/envが付きます(たとえば、java:comp/env/service/myServiceなど)。

    例19-18    Webサービス論理名のejb-jar.xml

    <service-ref>
        <service-ref-name>service/StockQuoteService</service-ref-name>
        <service-interface>com.example.StockQuoteService</service-interface>
    </service-ref>

  2. 論理名を実際のJNDI名にマッピングします。

    対応するOC4J固有のデプロイメント・ディスクリプタ(「EJB環境参照を構成する場所」を参照)の<service-ref-mapping>を定義し、そのname属性をWebサービス論理名(<service-ref>で定義)に構成し、<service-qname>サブ要素を構成します。

    例19-19に、Webサービスの<service-ref-mapping>要素を示します。

    例19-19    Webサービスの論理名からJNDI名へのマッピング用のorion-ejb-jar.xml

    <service-ref-mapping name="service/WebServiceBroker">
        <service-qname namespaceURI="urn:WebServiceBroker" localpart="WebServiceBroker"/>
    </service-ref-mapping>

Webサービスのルックアップおよび使用方法の詳細は、第30章「EJBおよびWebサービスの使用方法」を参照してください。

永続性コンテキストへの環境参照の構成

エンティティ・マネージャを取得する最も簡単な方法は、@PersistenceContextアノテーションを使用することです(「EntityManagerの取得」を参照)。

ただし、アノテーションおよびインジェクションをサポートしないクラス、つまりヘルパー・クラスでエンティティ・マネージャを取得するには、最初に適切なデプロイメント・ディスクリプタ・ファイルにpersistence-context-refを定義する必要があります。

永続性コンテキストへの環境参照を作成するには、次のようにします。

  1. 永続性コンテキストの論理名を定義します。

    適切なクライアント・デプロイメント・ディスクリプタに<persistence-context-ref>要素を定義し(「EJB環境参照を構成する場所」を参照)、次のサブ要素を構成します。

    • <persistence-context-ref-name>: 永続性コンテキストの論理名。

    • <persistence-unit-name>: この永続性コンテキストに関連付けられている永続性ユニットの名前。

      この名前の永続性ユニットはpersistence.xmlファイルで定義する必要があります。

      詳細は、次を参照してください。

    例19-20に、web.xmlファイル内の永続性コンテキストの<persistence-context-ref>要素を示します。

    参照名はpersistenceから開始することをお薦めしますが、これは必須ではありません。Beanコードでは、この参照(「ヘルパー・クラスでのエンティティ・マネージャの取得」を参照)のルックアップは、常に先頭にjava:comp/envが付きます(たとえば、java:comp/env/persistence/InventoryAppMgrなど)。

    例19-20    永続性コンテキストのweb.xml

    ...
        <servlet>
            <servlet-name>webTierEntryPoint</servlet-name>
            <servlet-class>com.sun.j2ee.blueprints.waf.controller.web.MainServlet</servlet-class>
            <init-param>
                <param-name>default_locale</param-name>
                <param-value>en_US</param-value>
            </init-param>
            <persistence-context-ref>
                <description>
                    Persistence context for the inventory management application.
                </description>
                <persistence-context-ref-name>
                    persistence/InventoryAppMgr
                </persistence-context-ref-name>
                <persistence-unit-name>
                    InventoryManagement <!-- Defined in persistenc.xml -->
                </persistence-unit-name>
            </persistence-context-ref>
        </servlet>
    ...

エンティティ・マネージャのルックアップおよび使用方法の詳細は、「ヘルパー・クラスでのエンティティ・マネージャの取得」を参照してください。

初期コンテキスト・ファクトリの構成

初期コンテキスト・ファクトリを使用して、初期コンテキスト(JNDIネームスペースへの参照)を取得します。初期コンテキストを使用すると、JNDI APIを使用してEnterprise Bean、リソース・マネージャのコネクション・ファクトリ、環境変数、またはJNDIでアクセス可能なその他のオブジェクトをルックアップできます。

使用する初期コンテキスト・ファクトリのタイプは、表19-2に示すように、使用しているクライアントのタイプによって決まります。

表19-2    クライアントの初期コンテキストの要件 
クライアント・タイプ  ターゲットEJBとの関連  初期コンテキスト・ファクトリ 

任意のクライアント 

クライアントとターゲットEnterprise Beanが同一JVM上に置かれます。 

デフォルト(「デフォルトの初期コンテキスト・ファクトリの構成」を参照) 

任意のクライアント 

クライアントとターゲットEnterprise Beanは同じアプリケーションにデプロイされます。 

デフォルト(「デフォルトの初期コンテキスト・ファクトリの構成」を参照) 

任意のクライアント 

クライアントの親として指定されるアプリケーションにデプロイされるターゲットEnterprise Bean。1 

デフォルト(「デフォルトの初期コンテキスト・ファクトリの構成」を参照) 

EJBクライアント

サーブレットまたはJSPクライアント 

クライアントとターゲットEnterprise Beanは同一JVM上に置かれず、同じアプリケーションにデプロイされません。ターゲットEJBアプリケーションはクライアントの親ではありません。1 

oracle.j2ee.rmi.
RMIInitialContextFactory
「Oracle初期コンテキスト・ファクトリの構成」を参照) 

スタンドアロンJavaクライアント 

クライアントとターゲットEnterprise Beanは同一JVM上に置かれず、同じアプリケーションにデプロイされません。ターゲットEJBアプリケーションはクライアントの親ではありません。1 

oracle.j2ee.naming.
ApplicationClientInitialContextFactory
「Oracle初期コンテキスト・ファクトリの構成」を参照) 

1 アプリケーションの親の設定方法は、『Oracle Containers for J2EE開発者ガイド』を参照してください。


注意

このリリースでは、RMIおよびアプリケーション・クライアントの初期コンテキスト・ファクトリの新しいパッケージ名に注意してください。 


詳細は、次を参照してください。

デフォルトの初期コンテキスト・ファクトリの構成

ターゲットBeanと同一JVM上に置かれているクライアント(表19-2を参照)は、そのノードのJNDIプロパティに自動的にアクセスします。したがって、JNDIプロパティは必要ないため、Enterprise Beanへのアクセスは簡単です。

例19-21    デフォルトの初期コンテキストの構成

//Get the Initial Context for the JNDI lookup for a local EJB
InitialContext ic = new InitialContext();
//Retrieve the Home interface using JNDI lookup
Object helloObject = ic.lookup("java:comp/env/ejb/HelloBean");

Oracle初期コンテキスト・ファクトリの構成

クライアントにOracle初期コンテキスト・ファクトリが必要な場合は(表19-2を参照)、次のJNDIプロパティを設定する必要があります。

JNDIプロパティの設定の詳細は、「Enterprise BeanでのJNDIプロパティの設定」を参照してください。

  1. java.naming.factory.initialプロパティをクライアントに適したOracle初期コンテキスト・ファクトリ(表19-2を参照)で定義します。

  2. java.naming.provider.urlプロパティをOC4Jインストール環境に適したネーミング・プロバイダURLで定義します。

  3. 例19-22に示すように、HashTableを作成し、javax.naming.Contextフィールドをキーとし、Stringオブジェクトを値として使用して必要なプロパティを移入します。

    例19-22    初期コンテキスト・ファクトリのプロパティの指定

    Hashtable env = new Hashtable(); 
    env.put("java.naming.factory.initial",
            "oracle.j2ee.server.ApplicationClientInitialContextFactory"); 
    env.put("java.naming.provider.url",
            "opmn:ormi://opmnhost:6004:oc4j_inst1/ejbsamples"); 
    
    
  4. 初期コンテキストをインスタンス化する場合は、例19-23に示すようにHashTableを初期コンテキスト・コンストラクタに渡します。

    例19-23    JNDIでアクセス可能なリソースの初期コンテキスト・ルックアップのインスタンス化

    Context ic = new InitialContext (env); 
    
    
  5. 初期コンテキストを使用して、JNDIでアクセス可能なリソースをルックアップします。

OC4JおよびOracle Application Serverのネーミング・プロバイダの構成

Oracle Application Serverのインストールで、OPMNは1つ以上のOC4Jインスタンスを管理します。この場合、java.naming.provider.urlの値は次の形式である必要があります。

opmn:ormi://<hostname>:<opmn-request-port>:<oc4j-instance-name>/<application-name>

このプロバイダURLのフィールドは、次のように定義されます。

たとえば、ホスト名がdpanda-us、リクエスト・ポートが6003、インスタンス名がhome1の場合、プロバイダURLは次のようになります。

opmn:ormi://dpanda-us:6003:home1/ejbsamples

詳細は、次を参照してください。

OC4Jスタンドアロンのネーミング・プロバイダURLの構成

スタンドアロンのOC4Jインストールでは、java.naming.provider.urlの値は次の形式である必要があります。

ormi://<hostname>:<ormi-port>/<application-name>

このプロバイダURLのフィールドは、次のように定義されます。

たとえば、ホスト名がdpanda-us、ORMIポートが23793、アプリケーション名がejb30slsbの場合、プロバイダURLは次のようになります。

ormi://dpanda-us:23793/ejb30slsb

詳細は、次を参照してください。

Enterprise BeanでのJNDIプロパティの設定

クライアントがターゲットと同一JVM上に置かれていて、ターゲットと同じアプリケーション内に存在している場合、またはターゲットが親の中に存在する場合、JNDIプロパティを初期化する必要はありません。それ以外の場合は、次のいずれかの方法でJNDIプロパティを初期化する必要があります。

この項の内容は次のとおりです。

詳細は、次を参照してください。

JNDIプロパティ・ファイルでのJNDIプロパティの設定

java.util.Propertiesのメソッドloadで指定されている要件に準拠した、jndi.propertiesという名前のJNDIプロパティを設定できます。

JNDIプロパティは次のように設定します。

<PropertyName>=<PropertyValue>

次に例を示します。

java.naming.factory.initial= oracle.j2ee.server.ApplicationClientInitialContextFactory

プロパティ名については、javax.naming.Contextのフィールド定義を参照してください。

例については、「JNDIプロパティの資格証明の指定」を参照してください。

jndi.propertiesファイル内でJNDIプロパティを設定する場合は、必ずこのファイルをクライアントのCLASSPATHからアクセス可能にしてください。または、このファイルをOC4J固有の適切なデプロイXMLファイルのejb-ref-mappingの属性jndi-properties-fileに指定してください(「リモートEJBへの環境参照の構成: クラスタ化されていない個別のWeb層およびEJB層」を参照)。

システム・プロパティでのJNDIプロパティの設定

JNDIプロパティは、コマンドラインで-D引数として、または環境参照(「環境変数への環境参照の構成」を参照)として指定されたシステム・プロパティとして設定できます。

初期コンテキストでのJNDIプロパティの設定

JNDIプロパティは、HashTableを作成し、javax.naming.Contextフィールドをキーとして、またStringオブジェクトを値として使用して必要なプロパティを移入することにより設定できます。初期コンテキストをインスタンス化する場合、HashTableを初期コンテキスト・コンストラクタに渡します。

例については、「初期コンテキストでの資格証明の指定」を参照してください。

EJB 3.0リソース・マネージャのコネクション・ファクトリのルックアップ

EJB 3.0を使用している場合は、リソース・インジェクション(「アノテーションの使用方法」を参照)またはInitialContext「初期コンテキストの使用方法」を参照)を使用してリソース管理接続をルックアップできます。

アノテーションの使用方法

例19-24に、アノテーションおよび依存性注入を使用してEJB 3.0リソース・マネージャのコネクション・ファクトリにアクセスする方法を示します。

例19-24    EJB 3.0リソース・マネージャのコネクション・ファクトリの注入

@Stateless public class EmployeeServiceBean implements EmployeeService {
    ...
    public void sendEmail(String emailAddress) {
        @Resource Session testMailSession;
        ...
    }
}

 

初期コンテキストの使用方法

例19-25に、初期コンテキストを使用してEJB 3.0リソース・マネージャのコネクション・ファクトリをルックアップする方法を示します。

例19-25    EJB 3.0リソース・マネージャのコネクション・ファクトリのルックアップ

@Stateless public class EmployeeServiceBean implements EmployeeService {
    ...
    public void sendEmail(String emailAddress) {
        InitialContext ic = new InitialContext();
        Session session = (Session) ic.lookup("java:comp/env/mail/testMailSession");
        ...
    }
}

詳細は、「初期コンテキスト・ファクトリの構成」を参照してください。

EJB 3.0環境変数のルックアップ

EJB 3.0を使用している場合は、リソース・インジェクション(「リソース・インジェクションの使用方法」を参照)またはInitialContext「初期コンテキストの使用方法」を参照)を使用して環境変数をルックアップできます。

リソース・インジェクションの使用方法

リソース・インジェクションを使用している場合は、次のいずれかを使用して、コンテナに依存してフィールドまたはsetterメソッド(プロパティ)を初期化できます。

同じJNDI名を使用してフィールドとsetterの両方を注入することはできません。

次の例では、デフォルトのJNDI名java:comp/env/maxExemptionsで環境変数に対して指定された値でmaxExemptionsフィールドを初期化する方法を示します。

例19-27に示すように、フィールド・レベル(例19-26を参照)またはsetterメソッド(プロパティ)レベルでリソース・インジェクションを使用できます。

例19-26    デフォルトの環境変数名を使用したフィールド・レベルでのリソース・インジェクション

@Stateless public class EmployeeServiceBean implements EmployeeService {
    ...
    // The maximum number of tax exemptions, configured by Deployer
    // Assumes JNDI name java:comp/env/maxExemptions.
    @Resource int maxExemptions;
    ...
    public void setMaxExemptions(int maxEx) {
        maxExemptions = maxEx;
    }
    ...
}

例19-27    デフォルトの環境変数名を使用したプロパティ・レベルでのリソース・インジェクション

@Stateless public class EmployeeServiceBean implements EmployeeService {
    ...
    int maxExemptions;
    ...
    // Assumes JNDI name java:comp/env/maxExemptions.
    @Resource
    public void setMaxExemptions(int maxEx) {
        maxExemptions = maxEx;
    }
    ...
}

例19-28に示すように、明示的なJNDI名を指定できます。

例19-28    特定の環境変数名でのリソース・インジェクション

@Stateless public class EmployeeServiceBean implements EmployeeService {
    ...
    int maxExemptions;
    ...
    @Resource(name="ApplicationDefaults/maxExemptions")
    public void setMaxExemptions(int maxEx) {
        maxExemptions = maxEx;
    }
    ...
}

初期コンテキストの使用方法

例19-29に、InitialContextを使用してBeanのコード内でこれらの環境変数をルックアップする方法を示します。

例19-29    環境変数のルックアップ

InitialContext ic = new InitialContext();
Integer min = (Integer) ic.lookup("java:comp/env/minBalance");
Integer max = (Integer) ic.lookup("java:comp/env/maxCreditBalance"));

環境変数の値を取得するには、各環境変数の先頭にjava:comp/env/を付加する必要があります。これは、コンテナが環境変数を格納する場所です。

詳細は、「初期コンテキスト・ファクトリの構成」を参照してください。

EJB 2.1リソース・マネージャのコネクション・ファクトリのルックアップ

EJB 2.1を使用している場合は、InitialContext「初期コンテキストの使用方法」を参照)を使用してリソース・マネージャのコネクション・ファクトリをルックアップできます。

リソースの構成の詳細は、「リソース・マネージャのコネクション・ファクトリ環境参照」を参照してください。

初期コンテキストの使用方法

例19-30に、java:comp/env/jdbc接頭辞の付いたEJBデプロイメント・ディスクリプタ(「JDBCデータソース・リソース・マネージャのコネクション・ファクトリへの環境参照の構成」を参照)で定義されている論理名を持つInitialContextを使用してBeanのコード内のJDBCデータソース・リソース・マネージャのコネクション・ファクトリをルックアップする方法を示します。

例19-30    JDBCデータソース・リソース・マネージャのコネクション・ファクトリのルックアップ

javax.sql.DataSource db;
java.sql.Connection conn;
...
InitialContext ic = new InitialContext();
db = (javax.sql.DataSource) initCtx.lookup("java:comp/env/jdbc/OrderDB");
conn = db.getConnection();

詳細は、「初期コンテキスト・ファクトリの構成」を参照してください。

EJB 2.1環境変数のルックアップ

EJB 2.1を使用している場合は、InitialContext「初期コンテキストの使用方法」を参照)を使用して環境変数をルックアップできます。

環境変数の構成の詳細は、「環境変数への環境参照の構成」を参照してください。

初期コンテキストの使用方法

例19-29に、InitialContextを使用してBeanのコード内でこれらの環境変数をルックアップする方法を示します。

例19-31    環境変数のルックアップ

InitialContext ic = new InitialContext();
Integer min = (Integer) ic.lookup("java:comp/env/minBalance");
Integer max = (Integer) ic.lookup("java:comp/env/maxCreditBalance"));

環境変数の値を取得するには、各環境変数の先頭にjava:comp/env/を付加する必要があります。これは、コンテナが環境変数を格納する場所です。

詳細は、「初期コンテキスト・ファクトリの構成」を参照してください。


戻る 次へ
Oracle
Copyright © 2002, 2008 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引