ページの先頭行へ戻る
SystemwalkerService Catalog Manager V14g アプリケーションサービス機能アプリケーション開発ガイド
Systemwalker

3.1.1 サービスをJavaクライアントとして実装する場合

プロビジョニングサービスの実装は、JAX-WSフレームワークを利用するのが最も簡単です。この方法を推奨します。アプリケーションサービス機能はJAX-WSフレームワークを利用してWebサービスにアクセスするためのJavaインターフェースを.jarファイルとして同梱しています。Javaコードを書くときにこの.jarファイルをインクルードすれば、Webサービスのクライアント機能およびサーバー機能を実装できます。この場合、WSDLからコードを生成する必要ありません。

Java EE環境では、Webサービスのクライアント機能およびサーバー機能の双方を配備できます。

クライアント機能(アプリケーションからアプリケーションサービス機能への呼び出し)

Webサービスのクライアント機能の実装のため、JAX-WSはWSDLで定義したWebサービスを直接呼び出すAPIと、インターフェースのプロキシの実装を取得するAPIを提供しています。

Webサービスのクライアントを作るには、以下のようなコードを利用します。

final URL wsdlLocation = ...
final javax.xml.namespace.QName serviceName = new QName(
    "http://bss.fujitsu.com/xsd/v1.1", 
    "SessionService");
final javax.xml.ws.Service service = Service.create(wsdlLocation, serviceName);
final SessionService sessionService = service.getPort(SessionService.class);
java.util.Map<String, Object> requestContext = ((BindingProvider)sessionService).getRequestContext();
requestContext.put(BindingProvider.USERNAME_PROPERTY, username);
requestContext.put(BindingProvider.PASSWORD_PROPERTY, password);

// 以上により、サービスがローカルに実装されている場合と全く同じように、サービスに直接アクセスできます。
sessionService.resolveUserToken(…);

サーバー機能(アプリケーションサービス機能からアプリケーションへの呼び出し)

JAX-WSフレームワークでWebサービスのサーバー機能を提供するということは、サービスインターフェースを実装し、これを公開するためのアノテーションを付けることを意味します。

テクニカルサービスがJava-EEに準拠したアプリケーションサーバーに配備されている場合、プロビジョニングサービスはアノテーション付のBeanとして配備できます。このBeanをJ2EEアプリケーションとして実装する場合は、ステートレスBeanとして実装できます。あるいは、Webアプリケーションの一部として配備する場合は、標準Javaオブジェクトとして実装できます。いずれの場合も、必要なアノテーションは、サービスのインターフェース定義を参照するjavax.jws.WebServiceです。

以下のコードは、プロビジョニングサービスの実装の例です。

@WebService(serviceName = "ProvisioningService",
             targetNamespace = "http://bss.fujitsu.com/xsd/v1.1",
             endpointInterface = "com.fujitsu.bss.provisioning.intf.ProvisioningService")
public class MyProvisioningServiceImpl implements ProvisioningService {
    //...
}

ターゲットの名前空間は、インターフェースに定義されているものと完全に同一にします。

エンドポイントインターフェース属性はWebサービスを定義しているインターフェースを参照しています。これによって、実装クラスがそれぞれのJavaメソッドの実装を提供できるようになります。Webサービスに関連するアノテーションは、すべてこのインターフェースから継承されます。

テクニカルサービスがJava-EEに準拠したアプリケーションサーバーには配備されないJavaアプリケーションである場合には、JAX-WSが提供しているAPIを使用してWebサービスを公開することができます。以下にコード例を示します。

import javax.xml.ws.Endpoint;
public static void main(String[] args) {
    Endpoint.publish(
        "http://www.example.com/MyService/provisioningServices",
        new MyProvisioningServiceImpl());
}

JAX-WSフレームワークを使用する場合、WebサービスのWSDLファイルは、公開したWebサービスのURLにクエリ"?wsdl"を付加したURLで自動的に公開されます。テクニカルサービス定義には、このURLを指定してください。