11.2 JNDIに対するOracle JVMのサポートの要件
この項では、Oracle JVMでJNDIをサポートするための実装要件について説明します。この項の内容は次のとおりです。
11.2.1 ネームスペース
ネームスペースの表記は、一般的なUNIXファイル・システム構造の場合と同様です。ルート・ディレクトリおよびディレクトリ・セパレータは、スラッシュ記号(/)で表記されます。ルート・ディレクトリはSYSが所有し、SYSのみがその下に新規のサブディレクトリを作成できます。
OJDSのインストール・プロセス中に、次の2つのディレクトリ(DirContexts)が作成されます。
-
/publicディレクトリ/publicディレクトリはテスト用のパブリック領域であり、すべてのユーザーがこのディレクトリ内のオブジェクトをバインド、削除または参照できます。 -
/etcディレクトリ/etcディレクトリは、クライアントが必要とするすべての本番タイプ・オブジェクトのデプロイメント用の領域であり、更新または削除されないように保護されます。/etcディレクトリへの書込みはSYSユーザーのみが実行できますが、読取りはすべてのユーザーが実行できます。
11.2.1.1 オブジェクト許可
ディレクトリ構造に格納されたオブジェクトには、許可を割り当てることができます。これらの許可は、次の許可を組み合せたものです。
-
読取り
-
書込み
-
実行
次の表で、ディレクトリ構造に格納されたオブジェクトに割り当てることができる許可について説明します。
| アクション | 親コンテキストの許可 | 子(obj/ctx)の許可 |
|---|---|---|
|
|
書込み |
NA |
|
|
書込み |
書込み |
|
|
書込み |
NA |
|
|
読取り |
読取り |
|
|
書込み |
書込み |
|
|
書込み |
書込み |
|
|
読取り |
読取り |
|
|
読取り |
読取り |
|
|
読取り |
読取り |
|
|
読取り |
読取り |
|
|
書込み |
書込み(存在する場合) |
|
|
読取り |
読取り |
ノート:
操作を正常に実行するには、すべての親コンテキストに実行許可があることが必要です。
11.2.1.2 永続記憶域表、索引および順序
OJVMSYSが所有するデータベース表には、各オブジェクトの次の詳細が格納されます。
-
ネームスペース・メタデータ
-
バウンド名
-
属性
-
パーミッション
-
格納されたオブジェクト表現
11.2.1.3 初期のコンテキストおよび許可
次の表に、インストール時にデフォルトで作成されるコンテキストを示します。
| 名前 | 所有者 | 読取り | 書込み | 実行 |
|---|---|---|---|---|
|
/ |
SYS |
PUBLIC |
SYS |
PUBLIC |
|
/public |
SYS |
PUBLIC |
PUBLIC |
PUBLIC |
|
/etc |
SYS |
PUBLIC |
SYS |
PUBLIC |
11.2.2 Oracle Java Directory ServiceのJNDIネームスペース・プロバイダ
この項では、Oracle Java Directory Serviceの次の概念について説明します。
11.2.2.1 ディレクトリ・コンテキスト
Oracle Java Directory Service (OJDS)は、javax.naming.directory.DirContextコンテキストで指定されているとおりにインタフェースを実装する必要があります。javax.naming.directory.DirContextコンテキスト、oracle.aurora.jndi.ojds.OjdsServerContextコンテキストおよびoracle.aurora.jndi.ojds.OjdsClientContextコンテキストは、オブジェクトに関連付けられている属性を調査および更新するメソッドを提供し、サーバー側とクライアント側のそれぞれの実行でのディレクトリ検索を可能にします。
次の表で、コンテキストを作成または使用する際に使用可能なJNDIプロパティについて説明します。
| パッケージ名 | 説明 |
|---|---|
|
|
アプリケーションの初期コンテキストの作成に使用するクラスを指定します。 |
|
|
データベース接続を作成するためのユーザーIDを指定します。このプロパティには値を指定する必要があります。 |
|
|
データベース接続を作成するためのパスワードを指定します。このプロパティには値を指定する必要があります。 |
|
|
データベース接続を作成するための接続URLを指定します。このプロパティは省略可能です。 |
|
|
特定のJNDI実装に対するURLハンドラの、コロンで区切られたリストです。 |
11.2.2.2 StateFactory
StateFactoryは、Javaオブジェクトを実装側のJNDIプロバイダに格納できるオブジェクトに変換します。OJDSによってすべてのオブジェクトが変換され、シリアライズ・オブジェクトにバインドされます。OJDSは、この変換に関するjava.io.Serializableインタフェースの仕様およびJava Object Serialization Specificationに準拠しています。シリアライズされたオブジェクトは、OJDS永続ストアに格納されます。OJDSでは、外部のStateFactoryはサポートされていません。
11.2.2.3 ObjectFactory
ObjectFactoryは、実装側のJNDIプロバイダに格納されているオブジェクトを取得して、Javaオブジェクトに変換します。OJDSでは、外部のObjectFactoryはサポートされていません。シリアライズ・オブジェクトが、OJDS永続ストアから取得されたバイナリ形式に基づいて作成されます。オブジェクトがデシリアライズされると、OJDSによってそのオブジェクトは次のいずれかの方法で処理されます。
-
オブジェクトが
Contextの場合、connectionフィールドとenvフィールドが設定され、DirContextが戻されます。 -
オブジェクトが
javax.naming.Referenceの場合、DirectoryManager.getObjectInstanceメソッドを使用してオブジェクトを作成できます。 -
オブジェクトが
Contextでもjavax.naming.Referenceでもない場合、オブジェクトはそのままユーザーに戻されます。
オブジェクトを指定する取得済バイトは、java.io.Serializableインタフェース標準に準拠している必要があります。オブジェクトを実装するクラスがクライアントで変更されると、オブジェクトのデシリアライズに失敗することがあります。このため、オブジェクト・バイトと、オブジェクト・バイトをデシリアライズするクラスまたはオブジェクト・ストリームとの互換性を保つように注意する必要があります。
11.2.2.4 OJDS URLのサポート
OJDSでは、次の形式で指定するURLがサポートされています。
ojds://jdbc_connection_url/path…/object
前の構文では:
-
jdbc_connection_urlは、サポートされているJDBC接続URLの1つです。URLには、ディレクトリに接続するためのjdbc_connection_urlを指定する必要があります。ノート:
OJDSプロバイダでは、JDKベースの外部クライアントに対してThinとOCIの両方のURLがサポートされています。たとえば、ThinドライバとOCIドライバにはそれぞれ次のURLを使用できます。
thin:localhost:5521:mysid oci:22.133.242:5521:mysid
ただし、サーバーでのOJDS URLは、Thin接続タイプにのみサポートされています。URL接続を完了するには、
Context.SECURITY_PRINCIPALおよびContext.SECURITY_CREDENTIALSの値を設定する必要があります。 -
pathは、UNIXタイプのファイル・システムと同様の、スラッシュ脚注1で区切られたリストです。これは、ディレクトリ・ツリー内のノードを表しています。 -
objectは、コンテキスト内の実際の終端オブジェクト名です。このオブジェクトを省略した場合、パスはスラッシュ(/)で終了します。このような場合は、このパスをルートとして表すDirContextが戻されます。
例
次のコード・スニペットは、ユーザーHRとして、接続されたOCIドライバを使用してディレクトリ/one/two内のMyObj型のオブジェクトmyobjを参照する方法を示しています。
import javax.naming.*;
.
.
.
Hashtable env = new Hashtable();
env.put(“java.naming.security.principal",“HR");
@ env.put(“java.naming.security.credentials","<password>");
MyObj obj = (MyObj)(new InitialDirContext(env)).lookup(ojds://oci:host1:5521:mysid/one/two/myobj");
11.2.3 ネームスペース・ブラウザ
ネームスペース・ブラウザを使用すると、OJDSに格納されたオブジェクトの許可およびプロパティを参照できます。既存のojvmjavaユーティリティが拡張され、次の表で説明する操作がサポートされています。
| コマンド名 | 説明 |
|---|---|
|
|
UNIXの |
|
|
コンテキストまたはオブジェクトを削除します。 |
|
|
OJDSでコンテキストを作成します。 |
|
|
特定のコンテキストやオブジェクトなどの所有者を変更します。 |
|
|
オブジェクトまたはコンテキストに対する権限を変更します。 |
|
|
作業コンテキストを変更します。 |
|
|
現行作業コンテキストを一覧表示します。 |
|
|
UNIXのシンボリック・リンクと同様に、別の名前を使用して同じオブジェクトを参照します。 |
|
|
コンテキスト(またはオブジェクト)の古い名前を変更するか、新しい名前に再バインドします。 |
|
|
オブジェクト参照またはネーミング・コンテキストをJNDIネームスペースにバインドします。 |
|
|
データ・ソース・オブジェクトを特定のコンテキストにバインドします。 |
|
|
URLオブジェクトを特定のコンテキストにバインドします。 |
関連トピック
脚注の説明
脚注1:スラッシュ記号(\)