ExtrinsicObject を作成するには、まず、リポジトリ項目に対して javax.activation.DataHandler オブジェクトを作成する必要があります。LifeCycleManager.createExtrinsicObject メソッドは DataHandler 引数を取ります。
引数を取らない、実装に固有の形式の createExtrinsicObject メソッドを使用することもできます。この形式を使用する場合、DataHandler オブジェクトをあとで作成し、ExtrinsicObject.setRepositoryItem メソッドを使ってそのリポジトリ項目を指定することができます。また、関連付けられたリポジトリ項目を持たない付帯オブジェクトを作成することもできます。
たとえば、リポジトリ内にファイルを格納するには、まず、java.io.File オブジェクトを作成します。その File オブジェクトから javax.activation.FileDataSource オブジェクトを作成し、それを使って DataHandler オブジェクトのインスタンスを生成します。
String filename = "./MyFile.xml"; File repositoryItemFile = new File(filename); DataHandler repositoryItem = new DataHandler(new FileDataSource(repositoryItemFile));
次に、その DataHandler を引数に指定して createExtrinsicObject を呼び出します。
ExtrinsicObject eo = blcm.createExtrinsicObject(repositoryItem); eo.setName("My Graphics File");
オブジェクトにアクセスできるように、オブジェクトの MIME タイプを指定します。デフォルトの MIME タイプは application/octet-stream です。ファイルが XML ファイルである場合、次のように設定します。
eo.setMimeType("text/xml");
最後に、ExtrinsicObject を Service Registry の適切な領域に格納するために、実装に固有の ExtrinsicObjectImpl.setObjectType メソッドを呼び出します。このメソッドのシグニチャーは、次のとおりです。
public void setObjectType(Concept objectType) throws JAXRException
特定のタイプのファイルに対する適切な概念を見つけるもっとも簡単な方法は、Web コンソールの探索機能を使用することです。ObjectType 分類スキーマの下で、さまざまなタイプの ExtrinsicObject 概念の中から探します。目的の概念の ID を getRegistryObject の引数として指定し、その概念を setObjectType の引数として指定します。
String conceptId = "urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:ExtrinsicObject:XML"; Concept objectTypeConcept = (Concept) bqm.getRegistryObject(conceptId); ((ExtrinsicObjectImpl)eo).setObjectType(objectTypeConcept);
最後に、ExtrinsicObject をレジストリに保存します。
Collection extobjs = new ArrayList(); extobjs.add(eo); BulkResponse response = blcm.saveObjects(extobjs);
ExtrinsicObject にはメタデータが含まれており、ファイルのコピーがリポジトリ内に格納されます。
レジストリに格納するファイルの種類の概念が存在しない場合には、その概念を自分で作成し、保存できます。
付帯オブジェクトの作成方法の例については、<INSTALL>/registry/samples/publish-extrinsic/src ディレクトリにある JAXRPublishExtrinsicObject.java を参照してください。このサンプルは、1 つの XML ファイル (独自の build.xml ファイル) を Service Registry に発行します。