Service Registry 3 2005Q4 開発者ガイド

組織のサービスおよびサービスバインディングの取得

ほとんどの組織はサービスを提供します。JAXR には、組織のサービスおよびサービスバインディングを取得するメソッドがあります。

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

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 メソッドを使用すると、そのようなサービスを直接検索できます。