@Scheduled + WebService定時(shí)任務(wù)運(yùn)行一段時(shí)間后,無故停止

前段時(shí)間做了一個(gè)空氣質(zhì)量定時(shí)更新的功能,發(fā)現(xiàn)運(yùn)行一天后定時(shí)任務(wù)停止,后臺不報(bào)錯(cuò)
貼出webservice代碼

public class DustServiceClient {

    JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();
    
    public Object fetchRealTimeData(String id){
        Client client = clientFactory.createClient(wsdl);
        Client client = tlClient.get();
        HTTPConduit http = (HTTPConduit) client.getConduit();
        HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
        httpClientPolicy.setConnectionTimeout(5000);
        httpClientPolicy.setReceiveTimeout(5000);
        httpClientPolicy.setAllowChunking(false);
        http.setClient(httpClientPolicy);

        String username = "username";
        String password = "password";
        List<Interceptor<? extends Message>> list = client.getOutInterceptors();
        Interceptor<? extends Message> in = new AddUserInterceptor(username, password);
        list.add(in);
        list.add(new LoggingOutInterceptor());
        try {
            Object[] result = client.invoke("fetchRealTimeData", id);
            return result[0];
        } catch (Exception e) {
            e.printStackTrace();
            return ResultBean.PARAM_ERR;
        }
    }
}

后臺設(shè)置一分鐘執(zhí)行一次更新
@Scheduled(fixedRate=5*60000)
每次大概有一百多次的webservice調(diào)用,執(zhí)行一天后基本就停止了,后臺也沒有錯(cuò)誤,查了好多原因后才發(fā)現(xiàn)原來Client在用完后還需要銷毀

public class DustServiceClient {

    JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();

    private static ThreadLocal<Client> tlClient = new ThreadLocal<Client>();

    public void initClient() {
        tlClient.set(clientFactory.createClient(wsdl);
        Client client = tlClient.get();
        HTTPConduit http = (HTTPConduit) client.getConduit();
        HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
        httpClientPolicy.setConnectionTimeout(5000);
        httpClientPolicy.setReceiveTimeout(5000);
        httpClientPolicy.setAllowChunking(false);
        http.setClient(httpClientPolicy);

        String username = "username";
        String password = "password";
        List<Interceptor<? extends Message>> list = client.getOutInterceptors();
        Interceptor<? extends Message> in = new AddUserInterceptor(username, password);
        list.add(in);
        list.add(new LoggingOutInterceptor());
    }
    
    public void destory() {
        tlClient.get().destroy();
    }
    
    
    public Object fetchRealTimeData(String id){
        
        try {
            Object[] result = tlClient.get().invoke("fetchRealTimeData", id);
            return result[0];
        } catch (Exception e) {
            e.printStackTrace();
            return ResultBean.PARAM_ERR;
        }
        
    }
}

沒有深入了解下destory()方法的作用,請大佬們指教!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,917評論 25 709
  • 我覺得上小學(xué)簡直太好了,因?yàn)橹形缈梢曰丶遥梢哉J(rèn)識很多新的小朋友,還可以學(xué)習(xí)到很多的知識,今天我和小朋友玩的...
    劉乾日記閱讀 277評論 0 2
  • 打開一本書,就走進(jìn)了一個(gè)故事,跟著他們歡歡喜喜、苦樂悲痛,這本書里,圍繞著艾麗絲島唯一的一家書店,我們走進(jìn)了書店老...
    四方fancy閱讀 335評論 1 3
  • 獨(dú)行于長街的片段 秋風(fēng)里易碎的感官 愛是短暫美滿 還是一生欺瞞 誓海盟山 不過都是狂言斗膽 何處是闌珊
    段童閱讀 437評論 0 2

友情鏈接更多精彩內(nèi)容