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 サービスと直接対話するには、次のセクションの説明に従って認証する必要があります。