ほとんどの組織は、サービスを提供するために自らをレジストリに発行します。このため、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 オブジェクトとして追加します。