パッケージ org.omg.CosNaming
このパッケージ、およびこのパッケージに含まれているすべてのクラスおよびインタフェースは、OMG IDLで記述されたモジュールであるファイルnameservice.idl
で、idlj
ツールを実行することにより生成されています。
パッケージの仕様
Java(TM) Platform, Standard Edition 6 ORBが準拠する公式の仕様のサポート・セクションの正確なリストは、「Java(TM) SE 6での正式なCORBAサポート仕様」を参照してください。
インタフェース
パッケージorg.omg.CosNaming
には、2つのpublicインタフェースと、いくつかの補助クラスが含まれています。
インタフェースは次の2つです。
NamingContext
BindingIterator
この2つのインタフェースは、名前とオブジェクト参照のバインドとアンバインド、バインドされたオブジェクト参照の取得、およびバインディングをリストから次々に返すための手段を提供します。 NamingContext
インタフェースは、ネーム・サービスの主要な機能を提供し、BindingIterator
インタフェースは、名前とオブジェクト参照のバインディングをリストから次々に返すための手段を提供します。
補助クラス
OMG IDLインタフェースをJavaプログラミング言語にマッピングするために、idljコンパイラは、補助クラスとみなされるJavaクラスを作成します。 生成された補助クラスは、NamingContext
インタフェースおよびBindingIterator
インタフェースによって使用されます。補助クラスについてのコメントを次に示します。
NamingContext
およびBindingIterator
によって使用されるクラス
ネーム・サービスによって使用されるクラスを次に示します。 これらのクラスそれぞれに対して生成されるヘルパー・クラスおよびホルダー・クラスについてはあとで説明します。
public final class NameComponent
-- 名前の基本単位です。 名前は、ネーミング・コンテキストでオブジェクト参照にバインドされます。名前は、1つまたは複数の
NameComponent
オブジェクトから成る配列です。 1つのNameComponent
を持つ名前を単純名と呼び、複数のNameComponent
オブジェクトを持つ名前を複合名と呼びます。NameComponent
オブジェクトは2つのフィールドから構成されています。id
-- 識別子として使用されるString
kind
-- 記述の目的で使用されるString
。 これは、構文に影響を与えることなくオブジェクトを記述できるという点で重要。 たとえば、Cプログラミング言語では、ソース・コード・ファイルであることを示すために、ファイル名に「.c」拡張子を付加する構文規則が用いられる。NameComponent
オブジェクトでは、ファイル拡張子などの構文規則を使用せず、kind
フィールドを使用してオブジェクトの型を記述できる。kind
フィールドの値の例としては、"c_source"
、"object_code"
、"executable"
、"postscript"
、""
などの文字列がある。kind
フィールドが空の文字列であることもある。
名前では、最後以外の各
NameComponent
オブジェクトはNamingContext
オブジェクトを表します。最後のNameComponent
オブジェクトはバインドされているオブジェクト参照を表します。 これは、最後の名前がファイル名で、その前のすべての名前がディレクトリ名を表すパス名の形式と似ています。public final class Binding
-- 名前をオブジェクト参照またはネーミング・コンテキストに関連したオブジェクト。Binding
オブジェクトには次の2つのフィールドがある。binding_name
- バウンド名を表す1つまたは複数のNameComponent
オブジェクトの配列binding_type
- 名前とオブジェクト参照のバインディングか、名前とネーミング・コンテキストのバインディングかを示すBindingType
オブジェクト
NamingContext
インタフェースには、名前とオブジェクト参照または名前とネーミング・コンテキストのバインドやアンバインド、バインディングのリストの取得、バインディングの解決(名前を指定すると、resolve
メソッドがその名前にバインドされているオブジェクト参照を返す)のためのメソッドがあります。public final class BindingType
-- 指定されたBinding
オブジェクトが、名前と(ネーミング・コンテキストではなく)オブジェクト参照のバインドか、あるいは名前とネーミング・コンテキストのバインドかを指定するオブジェクト。BindingType
クラスは、2つのメソッドと4つの定数からなります。 それらの定数のうちの2つはBindingType
オブジェクトで、残りの2つはint
です。BindingType
オブジェクトは、Binding
クラスのコンストラクタに渡したり、パラメータまたは戻り値として使用したりすることができます。BindingType
オブジェクトには、次のものがあります。public static final BindingType nobject
-- オブジェクト参照とのバインディングであることを示すpublic static final BindingType ncontext
-- ネーミング・コンテキストとのバインディングであることを示す
int
定数は、BindingType
オブジェクトを作成するfrom_int
メソッドに指定したり、value
メソッドの戻り値として使用したりすることができます。 このような定数には次のものがあります。public static final int _nobject
public static final int _ncontext
from_int
メソッドに_nobject
または_ncontext
以外何も指定されなかった場合は、org.omg.CORBA.BAD_PARAM
例外がスローされます。使用例を次に示します。
BindingType btObject = from_int(_nobject); BindingType btContext = from_int(_ncontext);
変数btObject
は、オブジェクト参照とのバインディングを表すために初期化されたBindingType
オブジェクトを参照します。 変数btContext
は、NamingContex
オブジェクトとのバインディングを表すために初期化されたBindingType
オブジェクトを参照します。value
メソッドは_nobject
または_ncontext
を返します。したがって次のコードでは、変数bt
には_nobject
または_ncontext
が格納されます。int bt = BindingType.value();
ホルダー・クラス
OMG IDLは、操作から値を返すためにOUTパラメータおよびINOUTパラメータを使用します。 OUTパラメータおよびINOUTパラメータを持たないJavaプログラミング言語へマッピングすることにより、それぞれの型にホルダー・クラスと呼ばれる特殊なクラスが作成されます。 ホルダー・クラスのインスタンスは、パラメータとしてJavaメソッドに渡すことができ、値をvalue
フィールドに代入できます。 これにより、OUTパラメータまたはINOUTパラメータの機能を果たすことができます。
org.omg.CosNaming
パッケージでは、次のホルダー・クラスが生成されます。
NamingContextHolder
BindingIteratorHolder
BindingHolder
BindingListHolder
BindingTypeHolder
NameComponentHolder
NameHolder
org.omg.CORBA
パッケージでは、Javaの基本型のそれぞれについて、ホルダー・クラス(IntHolder
、ShortHolder
、StringHolder
など)があります。
また、Name
クラスがない場合でもNameHolder
クラスがあります。同様に、BindingList
クラスがない場合でもBindingListHolder
があります。 これは、OMG IDLインタフェースでは、Name
およびBindingList
がtypedef
であるためです。 IDLのtypedef
からJavaの構造体へのマッピングはできませんが、typedef
がシーケンス用または配列用である場合はホルダー・クラスが生成されます。 Javaプログラミング言語にマッピングされた場合は、Name
はNameComponent
オブジェクトの配列になり、BindingList
はBinding
オブジェクトの配列になります。 すべてのホルダー・クラスには少なくとも2つのコンストラクタと1つのフィールドがあります。
value
フィールド -- OUTパラメータまたはINOUTパラメータとして使用される型のインスタンス。 たとえば、NamingContextHolder
のvalue
フィールドはNamingContext
オブジェクトになる。- デフォルト・コンストラクタ -- 型のデフォルト値を使用して初期化されたホルダー・オブジェクトを新しく生成するコンストラクタ。 たとえば、デフォルト・コンストラクタで生成された新しい
BindingHolder
オブジェクトのvalue
フィールドはnull
に設定される。これは、その値がオブジェクトのデフォルト値であるため。 この他のデフォルト値としては、boolean
のfalse
、numeric型およびchar型の0
、オブジェクト参照のnull
などがある。 - インスタンスからのコンストラクタ -- 指定されたインスタンスを使って
value
フィールドが初期化されたホルダー・オブジェクトを新しく生成するコンストラクタ
ユーザー定義型(Javaクラス)のホルダー・クラスには、このほかに3つのメソッドがありますが、アプリケーション開発者が直接これらのメソッドを使うことはありません。
ヘルパー・クラス
OMG IDLインタフェースのすべてのユーザー定義型で生成されるヘルパー・クラスは、ユーザー定義型の操作に必要なstaticメソッドを提供します。
ヘルパー・クラスには、アプリケーション・プログラマが使用するメソッドが1つだけあります。narrow
メソッドです。 IDLインタフェースからマッピングされたJavaインタフェースのみが、narrow
メソッドのあるヘルパー・クラスを持ちます。このため、CosNaming
パッケージでは、NamingContextHelper
クラスとBindingIteratorHelper
クラスのみにnarrow
メソッドがあります。
public static NamingContext narrow(org.omg.CORBA.Object obj)
-- 指定されたCORBAオブジェクトをNamingContext
オブジェクトに変換するpublic static BindingIterator narrow(org.omg.CORBA.Object obj)
-- 指定されたCORBAオブジェクトをBindingIterator
オブジェクトに変換する
パッケージorg.omg.CosNaming.NamingContextPackage
このパッケージは、org.omg.CosNaming
パッケージで使用される例外と、NotFound
例外の理由を提供するNotFoundReason
クラスのHelperクラスおよびHolderクラスを提供します。
次の例外のHelperクラスおよびHolderクラスがあります。
AlreadyBound
CannotProceed
InvalidName
NotEmpty
NotFound
ネーム・サービス互換性
SunのCosNaming
パッケージの実装は、OMG COSNaming
仕様に従っています。 つまり、Sunのネーム・サービスのAPIは、OMGが提供するネーム・サービスのガイドラインに従って実装されます。 したがって、サード・パーティのベンダーがOMG準拠のネーム・サービスを実装していれば、SunのCosNaming
の実装とサード・パーティのベンダーの実装との間での切替えが可能です。 ただし、例外文字列の相違など、ネーム・サービスを実装するベンダーによって多少の違いがあることを理解しておく必要があります。
サード・パーティのネーム・サービスを使用する際のガイド
同じベンダーのORBとORBサービスを使うことをお勧めしますが、Sun以外のCOSNaming
実装にSunのRMI-IIOP ORBを接続することも可能です。 次のステップに従います。
- Bootstrapサーバーにプロパティ・ファイルを作成し、そのファイルに2つのエントリを作成します。 たとえば、このプロパティ・ファイルを
/tmp/services
と名付けて、そのファイルにNameService,<Stringified IOR of the Root Naming Context>
を入れます。これによって、
NameService
と、使いたいCosNaming
実装のRoot Naming Contextとが関連付けられます。 - 次のコマンドを使って、スタンドアロンBootstrapサーバーを起動します。
java -classpath $(CLASSPATH) com.sun.corba.ee.internal.CosNaming.BootstrapServer -InitialServicesFile "/tmp/services" [-ORBInitialPort port]
コマンドの最後の角括弧は、ポート番号の指定がオプションであることを示します。
アプリケーションがorg.omg.CORBA.ORB.resolve_initial_references
メソッドを呼び出すと、CORBAプロセスがBootstrap Serverに接続してRoot Naming Contextを取得します。
パッケージの仕様
- Interoperable Naming Service (ptc/00-08-07)
関連項目
CosNaming
APIの概要および使用例については、次を参照してください。
Java IDLの概要については、次を参照してください。
- 導入されたバージョン:
- JDK1.3
-
インタフェースのサマリー インタフェース 説明 BindingIterator BindingIteratorインタフェースを使うと、クライアントはnext_oneまたはnext_nを使ってバインディングを次々に返すことができます。BindingIteratorOperations BindingIteratorインタフェースを使うと、クライアントはnext_oneまたはnext_nを使ってバインディングを次々に返すことができます。NamingContext ネーミング・コンテキストは、それぞれが一意の名前を持つ一連のネーム・バインディングを格納するオブジェクトです。NamingContextExt NamingContextExt
は、それぞれの名前が固有でInteroperable Naming Serviceの一部である名前バインディングのセットを格納するNamingContext
の拡張です。NamingContextExtOperations NamingContextExt
は、それぞれの名前が固有でInteroperable Naming Serviceの一部である名前バインディングのセットを格納するNamingContext
の拡張です。NamingContextOperations ネーミング・コンテキストは、それぞれが一意の名前を持つ一連のネーム・バインディングを格納するオブジェクトです。 -
クラスのサマリー クラス 説明 _BindingIteratorImplBase _BindingIteratorStub BindingIteratorインタフェースを使うと、クライアントはnext_oneまたはnext_nを使ってバインディングを次々に返すことができます。NamingContextExtStub NamingContextExt
は、それぞれの名前が固有でInteroperable Naming Serviceの一部である名前バインディングのセットを格納するNamingContext
の拡張です。_NamingContextImplBase _NamingContextStub ネーミング・コンテキストは、それぞれが一意の名前を持つ一連のネーム・バインディングを格納するオブジェクトです。Binding org/omg/CosNaming/Binding.java。BindingHelper org/omg/CosNaming/BindingHelper.java。BindingHolder org/omg/CosNaming/BindingHolder.java。BindingIteratorHelper BindingIteratorインタフェースを使うと、クライアントはnext_oneまたはnext_nを使ってバインディングを次々に返すことができます。BindingIteratorHolder BindingIteratorインタフェースを使うと、クライアントはnext_oneまたはnext_nを使ってバインディングを次々に返すことができます。BindingIteratorPOA BindingIteratorインタフェースを使うと、クライアントはnext_oneまたはnext_nを使ってバインディングを次々に返すことができます。BindingListHelper バインディングのリストです。BindingListHolder バインディングのリストです。BindingType 指定されたバインディングが、オブジェクト用(つまりネーミング・コンテキストでない)かネーミング・コンテキスト用かを指定します。BindingTypeHelper 指定されたバインディングが、オブジェクト用(つまりネーミング・コンテキストでない)かネーミング・コンテキスト用かを指定します。BindingTypeHolder 指定されたバインディングが、オブジェクト用(つまりネーミング・コンテキストでない)かネーミング・コンテキスト用かを指定します。IstringHelper org/omg/CosNaming/IstringHelper.java。NameComponent org/omg/CosNaming/NameComponent.java。NameComponentHelper org/omg/CosNaming/NameComponentHelper.java。NameComponentHolder org/omg/CosNaming/NameComponentHolder.java。NameHelper 名前は、名前コンポーネントのシーケンスです。NameHolder 名前は、名前コンポーネントのシーケンスです。NamingContextExtHelper NamingContextExt
は、それぞれの名前が固有でInteroperable Naming Serviceの一部である名前バインディングのセットを格納するNamingContext
の拡張です。NamingContextExtHolder NamingContextExt
は、それぞれの名前が固有でInteroperable Naming Serviceの一部である名前バインディングのセットを格納するNamingContext
の拡張です。NamingContextExtPOA NamingContextExt
は、それぞれの名前が固有でInteroperable Naming Serviceの一部である名前バインディングのセットを格納するNamingContext
の拡張です。NamingContextHelper ネーミング・コンテキストは、それぞれが一意の名前を持つ一連のネーム・バインディングを格納するオブジェクトです。NamingContextHolder ネーミング・コンテキストは、それぞれが一意の名前を持つ一連のネーム・バインディングを格納するオブジェクトです。NamingContextPOA ネーミング・コンテキストは、それぞれが一意の名前を持つ一連のネーム・バインディングを格納するオブジェクトです。