2014-07-25 5 views
0

WebServiceMessageCallback에서 HTTP 응답을 추출하고 있지만 콜백 외부에서 변수를 업데이트하려고하면 다음과 같은 결과가 발생합니다. 내부 클래스 내부의 최종 변수 rawResponse를 참조 할 수 없습니다. . 다른 방법 "콜백 외부의 WS WS 클라이언트 업데이트 변수

String rawResponse=null; 
try { 
    this.webserviceTemplate.sendSourceAndReceiveToResult(source, 
     new WebServiceMessageCallback() { 
       @Override 
       public void doWithMessage(WebServiceMessage message) 
         throws IOException, TransformerException { 
        TransportContext context = TransportContextHolder.getTransportContext(); 
        CommonsHttpConnection connection = (CommonsHttpConnection )context.getConnection(); 
        context.getConnection(); 
        rawResponse = connection.getPostMethod().getResponseBodyAsString();*/ 

답변

0

당신은 정말 final 변수를 사용하여 작업을 수행해야하는 AtomicReference에 정의 당신을위한 것입니다 :

final AtimicReference<String> rawResponse = new AtimicReference<String>(); 
try { 
    this.webserviceTemplate.sendSourceAndReceiveToResult(source, 
     new WebServiceMessageCallback() { 
       @Override 
       public void doWithMessage(WebServiceMessage message) 
         throws IOException, TransformerException { 
... 
        rawResponse.set(connection.getPostMethod().getResponseBodyAsString());