JRun JNDI の使用

JRun には、JRun で使用される JNDI コンテキストの保管と管理を行う JNDI プロバイダが含まれています。JRun JNDI プロバイダはリモートアクセスを提供しています。また、このサービスはクラスタすることが可能です。このため、JNDI サービスに (bindToJNDI 属性を true に設定することで) 登録されている JRun サービスはすべてリモートアクセス可能であり、クラスタすることができます。クラスタリングの詳細については、「オブジェクトのクラスタリング」を参照してください。

JNDI サービスは、JNDI ポートをリスンします。リモートクライアントは、InitialContext コンストラクタの PROVIDER_URL としてこのポート番号を指定します。詳細については、「NamingService」を参照してください。

保管されるオブジェクト

JRun は、次のタイプのオブジェクトを JNDI に保管します。
オブジェクトまたは
サービス
説明
データソース
トップレベルにあり、SERVER-INF/jrun-resources.xml ファイルの data-source 要素の jndi-name サブ要素によって定義された名前を持ちます。クライアントは、リソースリファレンス (デプロイメントディスクリプタからの)、JNDI 名、または java:<jndi 名> でデータソースを参照できます。
EJB
トップレベルにあり、jrun-ejb-jar.xml ファイルの jndi-name 要素によって定義された名前を持ちます。jrun-ejb-jar.xml ファイルが存在しない場合、デフォルトは ejb-jar.xml ファイルの ejb-name 要素に定義された値です。クライアントは、JNDI 名、または java:<jndi 名>で EJB を参照できます。
DefaultDataSource
起動時に定義された最初の JDBC データソースへのアクセスを提供します。
jms/queue
SERVER-INF/jrun-resources.xml ファイルの jms-destination 要素の jndi-name サブ要素で定義されたすべての JMS キューが含まれます。
jms/topic
SERVER-INF/jrun-resources.xml ファイルの jms-destination 要素の jndi-name サブ要素で定義されたすべての JMS トピックが含まれます。
jms/<接続ファクトリ>
JMS 接続ファクトリを定義します。デフォルトでは、JRun サーバは次の JMS 接続ファクトリを使用します。
  • jrun-jms.xml定義されている QueueConnectionFactory
  • jrun-jms.xml で定義されている TopicConnectionFactory
  • jrun-resources.xml で定義されているjndi-QueueConnectionFactory
mail/Mail セッション
jrun-resources.xml または jrun-xml で定義されている Mail セッションです。
jms_provider/queue
JRun JMS プロバイダによって作成されたキューの、プロバイダ固有の JNDI バインディングです。
jms_provider/topic
JRun JMS プロバイダによって作成されたトピックの、プロバイダ固有の JNDI バインディングです。
jms_provider/<トランスポート>
JRun JMS プロバイダによって使用される各トランスポートメカニズムの接続ファクトリ設定です。
comp/UserTransaction
ユーザートランザクションです。
comp/env/AxisServer
Web サービスの Axis サーバです。
DefaultDomain/comp/ UserTransaction
デフォルトドメインのユーザートランザクションです。
DefaultDomain/ TransactionManager
デフォルトのドメイントランザクションマネージャです。
service/<サービス名>
クラスタされた JRun サービスです。クラスタされた環境でこの JNDI バインディングを使用してサービスを参照する場合、コンテキストは、クラスタ内の任意の JRun サーバから返されます。
service/<サーバ名>/
<サービス名>
指定されたサーバの JRun サービスです。この JNDI バインディングを使用してサービスを参照する場合、コンテキストは常に指定された JRun サーバから返されます。

JNDI による JRun サービスへのアクセス

JRun JNDI ツリーのサービスには、jrun: という接頭辞が付いています。たとえば、JNDI を使用してロガーサービスにアクセスするには、次のコードを使用します。

...
  try {
    Properties p = new Properties();
    p.put(Context.INITIAL_CONTEXT_FACTORY, "jrun.naming.JRunContextFactory");
    p.put(Context.PROVIDER_URL, "localhost:2918");
    InitialContext ctx = new InitialContext(p);
    LoggerService ls = (LoggerService) ctx.lookup("jrun:service/LoggerService");
    ls.logInfo("Message logged using LoggerService");
...

JNDI を使用してクラスタ環境の JRun サービスを検索する方法の詳細については、「JRun サービスとオブジェクトのクラスタリングの使用」を参照してください。

ユーティリティメソッド

JRun は、実行時 JNDI ツリーにあるすべてのエントリを取り出すために次のメソッドを提供しています。

これらのメソッドを使用するには、コンパイルクラスパスに <JRun のルートディレクトリ>
/lib/jrun.jar を指定します。JRun は、クラスパスに jrun.jar を自動的に含みます。