Menu Close
25.5. コンシューマーのビジネスロジックの実装
概要
リモートエンドポイントのサービスプロキシーをインスタンス化すると、ローカルオブジェクトであるかのようにメソッドを呼び出すことができます。呼び出しは、リモートメソッドが完了するまでブロックされます。
注記
メソッドに @OneWay
アノテーションが追加されると、呼び出しは即座に返されます。
例
例25.7「WSDL コントラクトを使用せずに実装されたコンシューマー」に、例24.7「すべてのアノテーションが付けられた SEI」で定義されるサービスのコンシューマーを示します。
例25.7 WSDL コントラクトを使用せずに実装されたコンシューマー
package com.fusesource.demo; import java.io.File; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; public class Client { public static void main(String args[]) { QName serviceName = new QName("http://demo.eric.org", "stockQuoteReporter"); Service s = Service.create(serviceName); QName portName = new QName("http://demo.eric.org", "stockQuoteReporterPort"); s.addPort(portName, "http://schemas.xmlsoap.org/soap/", "http://localhost:9000/EricStockQuote"); quoteReporter proxy = s.getPort(portName, quoteReporter.class); Quote quote = proxy.getQuote("ALPHA"); System.out.println("Stock "+quote.getID()+" is worth "+quote.getVal()+" as of "+quote.getTime()); } }
例25.7「WSDL コントラクトを使用せずに実装されたコンシューマー」のコードは、以下を行います。
Service
オブジェクトを作成する。
エンドポイント定義を Service
オブジェクトに追加する。
Service
オブジェクトからサービスプロキシーを取得する。
サービスプロキシーで操作を呼び出す。