Service Registry 3 2005Q4 開発者ガイド

サービスとサービスバインディングの作成

ほとんどの組織は、サービスを提供するために自らをレジストリに発行します。このため、JAXR には、サービスやサービスバインディングを組織に追加する機能が用意されています。

また、どの組織にも関連付けられていないサービスを作成することもできます。

Service オブジェクトには Organization オブジェクトと同じく、名前、説明、およびサービス登録時にレジストリによって生成される一意のキーがあります。Service オブジェクトは分類を持つこともできます。

サービスには通常、すべてのオブジェクトに共通する属性のほかに、サービスへのアクセス方法に関する情報を提供する「サービスバインディング」があります。ServiceBinding オブジェクトには通常、説明、アクセス URI、および仕様リンクがあります。仕様リンクは、サービスバインディングと技術仕様をリンクします。技術仕様には、サービスバインディングを用いてサービスを使用する方法が記述されています。

次のコードは、サービスのコレクションを作成し、サービスにサービスバインディングを追加したあと、サービスを組織に追加する方法を示したものです。ここでは、アクセス URI は指定されていますが、仕様リンクは指定されていません。このアクセス URI は実際には存在しませんが、JAXR はデフォルトで、発行されたすべての URI の有効性をチェックします。このため、このバインディングでは validateURI 属性が false に設定されています。

// Create services and service
Collection services = new ArrayList();
Service service = blcm.createService("My Service Name");
InternationalString is =
     blcm.createInternationalString("My Service Description");
service.setDescription(is);

// Create service bindings
Collection serviceBindings = new ArrayList();
ServiceBinding binding =
     blcm.createServiceBinding();
is = blcm.createInternationalString("My Service Binding " +
     "Name"));
binding.setName(is);
is = blcm.createInternationalString("My Service Binding " +
    "Description");
binding.setDescription(is);
// allow us to publish a fictitious URI without an error
binding.setValidateURI(false);
binding.setAccessURI("http://TheCoffeeBreak.com:8080/sb/");
...
serviceBindings.add(binding);

// Add service bindings to service
service.addServiceBindings(serviceBindings);

// Add service to services, then add services to organization
services.add(service);
org.addServices(services);

サービスバインディングには通常、サービスへのアクセス方法を記述した技術仕様があります。そのような仕様の一例として、WSDL 文書が挙げられます。サービスの仕様が WSDL 文書である場合、その格納場所を発行するには、ExtrinsicObject を参照する SpecificationLink オブジェクトを作成します。詳細は、「リポジトリへの項目の格納」を参照してください。

この機構は、仕様の場所を UDDI レジストリに発行する方法とは異なります。UDDI レジストリの場合、Concept オブジェクトを作成したあと、その Concept オブジェクトに、WSDL 文書の URL を ExternalLink オブジェクトとして追加します。