2015-11-25 3 views
5

जारी नहीं कर रहा है, मैं जर्सी 2.0 का उपयोग कर AsyncInvoker का उपयोग कर रहा हूं। यह मेरे लिए ठीक काम करता है। हालांकि, वापसी के पूरा होने के बाद धागा खत्म नहीं हो रहा है। कृपया ध्यान दें कि मुझे उन सेवाओं के लिए कोई प्रतिक्रिया की उम्मीद नहीं है जिन्हें मैं कॉल करता हूं।AsyncInvoker थ्रेड

public Future<Response> fire(WebTarget webTarget) { 
    Future<Response> response = null; 

    try { 
     response = webTarget.request(MediaType.APPLICATION_JSON_TYPE) 
          .accept(MediaType.APPLICATION_JSON_TYPE) 
          .headers(headers) 
          .async().get(); 
    } 

    catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return response; 
} 
+0

किसी भी समाधान तकनीकी विशेषज्ञ !!! – krutik

उत्तर

0

जब तक आप वास्तविक javax.ws.rs.core.Response है कि एक बार भविष्य मूल्य का निराकरण आप के लिए प्रदान की जाती है के साथ कुछ भी नहीं करते, अनुरोध प्रतिक्रिया स्ट्रीम खुला रखा जाता है (और धागे के रूप में कच्चे HTTP अनुरोध के साथ जुड़े स्वागत मुझे लगता है)। आपको या तो:

  1. javax.ws.rs.core.Response ऑब्जेक्ट के साथ कुछ करें और इसे बंद करें (या यह स्ट्रीम है)।
  2. प्रतिक्रिया स्टीम को वास्तविक वस्तु में परिवर्तित करने के लिए .get(MyPojo.class) का उपयोग करें। यह आपके लिए स्ट्रीम बंद कर देगा और इसके बजाय भविष्य में MyPojo उदाहरण हल करेगा।
0

आपको कॉलिंग विधि में आपके client ऑब्जेक्ट को बंद करने की आवश्यकता है। बुला विधि में आप नीचे की तरह कुछ होता है -

Client client = ClientBuilder.newClient(); 

WebTarget webTarget = client.target(SERVER_URL).path(API_PATH).path(String.valueOf(id)); 

fire(webTarget); 

तो तुम बंद करने के लिए अपने client इस विधि बुला के बाद की जरूरत है -

client.close() 

हालांकि, client को बंद करने के लिए अनुशंसित तरीका प्रतिक्रिया प्राप्त करने के बाद है। कुछ नीचे की तरह -

public void fire(WebTarget webTarget) { 

    try { 
     webTarget.request(MediaType.APPLICATION_JSON_TYPE) 
          .accept(MediaType.APPLICATION_JSON_TYPE) 
          .headers(headers) 
          .async().get(new InvocationCallback<Response>() { 

      @Override 
      public void completed(Response response) { 
       // Do whatever your wish with response 
       client.close(); 
      } 

      @Override 
      public void failed(Throwable throwable) { 
       throwable.printStackTrace(); 
       client.close(); 
      } 
     }); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
संबंधित मुद्दे