Service Registry 3.1 開発ガイド

オブジェクトの識別

「一意の識別子によるオブジェクトの検索」で説明したように、Service Registry 内のすべてのオブジェクトには、一意の識別子と論理識別子の 2 つの識別子があります。オブジェクト作成時にこれらの識別子を設定しなかった場合は、レジストリによって一意の値が生成され、その値が一意の識別子と論理識別子の両方に割り当てられます。

新しいバージョンのオブジェクトが作成される場合は常に、論理識別子は元の識別子と同じですが、一意の識別子については、元の識別子にコロンとバージョン番号が付加された新しい一意の識別子が Service Registry によって生成されます。詳細については、「オブジェクトのバージョンの取得」および 「オブジェクト間の関係の作成: 関連付け」を参照してください。

長期間使用するオブジェクトを作成する場合は、わかりやすい名前で階層型の識別スキーマを確立するべきです。次に、API メソッドを使用してオブジェクト識別子を設定できます。わかりやすい識別子名の例については、デフォルトの Service Registry データベースを生成する数多くのオブジェクトを参照してください。たとえば、このデータベースの組織には、urn:freebxml:registry:Organization:freebXMLRegistry という識別子があります。

JAXR API では、一意の識別子は Key オブジェクトと呼ばれます。LifeCycleManager.createKey メソッドを使用して、String オブジェクトから一意の識別子を作成できます。その後、RegistryObject.setKey メソッドを使用してキーを設定できます。

論理識別子は lid と呼ばれます。Service Registry の JAXR プロバイダには、この識別子を設定するための、実装に固有の RegistryObjectImpl.setLidメソッドが用意されています。このメソッドも String 引数を取ります。このメソッドのシグニチャーは次のとおりです。

public void setLid(java.lang.String lid)
    throws JAXRException

指定する識別子はすべて、有効かつグローバルで一意な URN (Uniform Resource Name) である必要があります。JAXR API がオブジェクトのキーを生成するとき、そのキーの形式は DCE 128 UUID (Universal Unique IDentifier) になります。

一意の識別子を設定するけれども lid は設定しない場合、Service Registry は一意の識別子と同じ値を持つ lid をオブジェクトに割り当てます。オブジェクトの作成時に lid を明示的に設定する場合は、一意の識別子と同じ値にするべきです。

ほとんどのサンプルプログラムでは、作成するオブジェクトを長期間使用したり一意にしたりすることは想定していないため、識別子は設定されていません。