ほとんどの組織はサービスを提供します。JAXR には、組織のサービスおよびサービスバインディングを取得するメソッドがあります。
Service オブジェクトは、ほかのレジストリオブジェクトの属性をすべて持っています。さらに、通常は、サービスへのアクセス方法に関する情報を提供する「サービスバインディング」も持ちます。ServiceBinding は通常、ほかの属性に加えてアクセス URI と仕様リンクも持ちます。仕様リンクは、サービスバインディングと技術仕様をリンクします。技術仕様には、サービスバインディングを通してサービスを使用する方法が記述されています。仕様リンクには次の属性があります。
仕様オブジェクト。通常は ExtrinsicObject
使用法の説明。InternationalString オブジェクト
使用法パラメータの Collection。String 値
Service.getProvidingOrganization メソッドを使用して、サービスを提供している組織を取得できます。また、ServiceBinding.getService メソッドを使用して、サービスバインディングのサービスを取得できます。
次のコードは、組織 org のサービスを取得します。続いて、各サービスのサービスバインディングを取得し、各サービスバインディングについてそのアクセス URI と仕様リンクを取得します。
Collection services = org.getServices(); Iterator svcIter = services.iterator(); while (svcIter.hasNext()) { Service svc = (Service) svcIter.next(); System.out.println(" Service name: " + getName(svc)); System.out.println(" Service description: " + getDescription(svc)); Collection serviceBindings = svc.getServiceBindings(); Iterator sbIter = serviceBindings.iterator(); while (sbIter.hasNext()) { ServiceBinding sb = (ServiceBinding) sbIter.next(); System.out.println(" Binding name: " + getName(sb)); System.out.println(" Binding description: " + getDescription(sb)); System.out.println(" Access URI: " + sb.getAccessURI()); Collection specLinks = sb.getSpecificationLinks(); Iterator slIter = specLinks.iterator(); while (slIter.hasNext()) { SpecificationLink sl = (SpecificationLink) slIter.next(); RegistryObject ro = sl.getSpecificationObject(); System.out.println("Specification link " + "object of type " + ro.getObjectType()); System.out.println("Usage description: " + sl.getUsageDescription().getValue()); Collection ups = sl.getUsageParameters(); Iterator upIter = ups.iterator(); while (upIter.hasNext()) { String up = (String) upIter.next(); System.out.println("Usage parameter: " + up); } } } }
「組織の属性の取得: 例」のサンプルは、検索した組織のサービスおよびサービスバインディングも表示します。
サービスは組織から独立して存在することも多くあります。BusinessQueryManagerImpl.findObjects メソッドを使用すると、そのようなサービスを直接検索できます。