Velocity サービスの指定とバインド

Watson™ Explorer Engine API を使用するすべてのアプリケーションの Watson Explorer Engine 固有の最初のステップは、VelocityService オブジェクトをインスタンス化し、その VelocityPort ポートを取得し、ポートのエンドポイントを設定することです。VelocityPort は、使用可能なすべての Watson Explorer Engine API 関数用のメソッドを含み、Velocity Web サービスとのすべての通信を行うオブジェクトです。

次の Java コード断片は、Velocity オブジェクトを作成し、リモート・システムで実行中の Watson Explorer Engine サービスへの接続を確立します。

    VelocityService vs = null;
    try {
        vs = new VelocityService( new URL(endpoint+"wsdl=1&specialize-for=&use-types=true&"), 
      new QName("urn:/velocity", "VelocityService"));
    } catch (java.net.MalformedURLException e) {
        System.out.println("ERROR:¥n"+e);
        System.exit(1);
    }

Velocity サービスを作成するための呼び出しは、アプリケーションが WSDL の検証を試行する場所を一般化することに注意してください。この呼び出しは認証が不要で、WSDL 関連の &wsdl=1&specialize-for=&use-types=true CGI パラメーターが含まれています。これをオーバーライドしない場合、アプリケーションは velocity.jar を作成したときに最初に使用した WSDL の場所と通信しようとします。その場所が使用できない場合、アプリケーションは失敗します。

Watson Explorer Engine オブジェクトが作成されると、以下の Java 呼び出しに示すように、リモート Velocity サービスとの通信に使用するポートを取得できます。

    VelocityPort vp = vs.getVelocityPort();

同等の C# コードは、以下の例に示すようにもう少し簡単です。

    VelocityPortClient vpc = new VelocityPortClient();
    vpc.Endpoint.Address =
        new System.ServiceModel.EndpointAddress(endpoint);

Next, Java applications may want to specify the endpoint for the port that will be used to communicate with the Watson Explorer Engine service, as in the following example:

    ((javax.xml.ws.BindingProvider) vp).getRequestContext().put(javax.xml.ws.BindingProvider.ENDPOINT_ADDRESS_PROPERTY, 
    							    endpoint);

エンドポイントを指定しない場合、アプリケーションは Velocity サービスを作成したときに使用したエンドポイントを使用します。認証オブジェクトを使用する代わりに、v.username CGI パラメーターおよび v.password CGI パラメーターを使用して認証を埋め込む場合、それらの値をここに追加できます。

リモートの Velocity サービスへの接続を確立することは、Watson Explorer Engine API アプリケーションの重大なブートストラップ・ステップですが、実際にリモート Velocity サービスと直接対話するには、次のセクションの説明に従って認証する必要があります。