2012-06-06 2 views
0

websevices를 처음 사용합니다. 내 요구 사항은 다른 공급 업체에 의해 자바 클래스에서 동일한 입력으로 제공되는 다른 웹 서비스를 호출하는 것입니다. 예 : 기상 정보는 여러 공급 업체에서 제공하며 모든 공급 업체는 도시 이름으로 입력합니다. 서로 다른 공급 업체가 제공하는 모든 웹 서비스를 병렬로 호출하는 Java 클래스에서 메소드를 호출하려고합니다. 그런 다음 결과를 jsp (모든 공급 업체에서 axis2를 사용하는 공급 업체)에 표시해야합니다.어떻게하면 자바에서 동일한 입력으로 다른 공급 업체가 제공하는 다중 웹 서비스를 호출 할 수 있습니까?

답변

0

동일한 입력을하는 경우에는이 작업을 어렵지 않습니다. 이것은 다른 회선에서 각 공급 업체의 결과를 출력합니다

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); 
     } 
    } 
} 

:

당신이, 축 자바 API를 사용하는 가정, 당신은 뭔가를 할 수 있습니다.

+0

안녕하세요, webservice 중 하나가 실패하면 결과에 어떤 영향이 있습니까? 나머지 결과가 표시되거나 전체 요청이 실패 함을 의미합니까? 다른 벤더가 제공하는 다른 메소드를 호출 할 때 타임 아웃을 사용할 수 있습니까? 그래서 시간이 걸리면 다른 결과를 표시 할 수 있습니까? –

+0

예. 하나의 웹 서비스가 실패하면 예외가 발생합니다. 당신은 특별히 공급 업체를위한 예외를 잡아서 에러 메시지를 표시해야 할 것입니다. 속도를 높이려면 스레드를 사용하여 병렬로 실행하는 것을 고려한 다음 공통 끝점에 결과를 커밋하십시오. –

+0

감사합니다. 스레드를 사용하여 예제를 자세히 작성하십시오. –

관련 문제