私はwebsevicesに不慣れです。私の要件は、Javaクラスで同じ入力を使用して、さまざまなベンダーによって提供されるさまざまなWebサービスを呼び出すことです。例:天気情報はさまざまなベンダーから提供されており、すべてのベンダーが都市名として入力を取得しています。さまざまなベンダーが提供するすべてのWebサービスを並行して呼び出すJavaクラスのメソッドを呼び出したいと思います。次に、ベンダー(axis2を使用しているすべてのベンダー)ごとにjspで結果を表示する必要があります。
質問する
130 次
1 に答える
0
同じ入力がある場合、これは難しいことではありません。
axis2 Java APIを使用しているとすると、次のようなことができます。
public class Test {
public static void main(String[] args) throws AxisFault,Exception {
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
String [] vendors = {"http://example.com/vendor1/services/GETWeatherHttpSoap12Endpoint", "http://example.com/vendor2/services/GETWeatherHttpSoap12Endpoint"}; // Array of all vendors
for (String vendor : vendors) {
EndpointReference targetEPR = new EndpointReference(vendor);
options.setTo(targetEPR);
QName opGetExchange = new QName("http://ws.apache.org/axis2", "getWeather");
// preparing the parameters
String country = "USA";
Object[] opGetExchangeArgs = new Object[] {country};
// preparing the return type
Class[] returnTypes = new Class[] { String.class };
// invoking the service passing in the arguments and getting the response
Object[] response = serviceClient.invokeBlocking(opGetExchange, opGetExchangeArgs, returnTypes);
// obtaining the data from the response
String result = (String) response[0];
System.out.println("Vendor: " + result);
}
}
}
これにより、各ベンダーからの結果が異なる行に出力されます。
于 2012-06-06T16:28:24.153 に答える