在webservice里調(diào)用耗時(shí)方法出錯(cuò)的解決方案
webservice調(diào)用耗時(shí)方法出錯(cuò)
在webservice里調(diào)用多個(gè)耗時(shí)的方法時(shí),如果按順序執(zhí)行,下面的方法要等上面的方法執(zhí)行完畢才能執(zhí)行,如果這些方法比較耗時(shí),并且包括回調(diào)等異步調(diào)用,就回出現(xiàn)下面的方法不能正確執(zhí)行,
實(shí)例代碼如下:
public String runMethod(String syncId) { try { //處理Datapull dataPullService.setSyncId(syncId); //設(shè)置數(shù)據(jù)庫參數(shù) dataPullService.setJdbcUrl(Config.getStringValue("jdbc.jdbcUrl")); dataPullService.setUser(configurer.decrypt(Config.getStringValue("jdbc.user"), "1202000200021234")); dataPullService.setPassword(configurer.decrypt(Config.getStringValue("jdbc.password"), "1202000200021234")); dataPullService.setTypeid(1); dataPullService.run(); //處理ofd轉(zhuǎn)換 ofdService.setSyncId(syncId); ofdService.setServerUrl(Config.getStringValue("serverUrl")); ofdService.run(); //判斷OFD文件是否轉(zhuǎn)換完成 while(true) { if(serviceManager.isHasOFD(syncId)) { break; } } //處理pdf轉(zhuǎn)換 pdfService.setSyncId(syncId); pdfService.setServerUrl(Config.getStringValue("serverUrl")); pdfService.run(); }catch(Exception e) { return "error "+syncId; } return "success "+syncId; }
在上面的方法里,處理ofd的代碼執(zhí)行完畢會(huì)在某個(gè)表里插入一條數(shù)據(jù),這個(gè)操作耗時(shí),并且是異步的,會(huì)出現(xiàn)還沒有插入成功,下面的pdf執(zhí)行代碼查詢不到記錄導(dǎo)致調(diào)用pdf部分失敗。
解決方案是:
一直去查詢那張表,如果有記錄則調(diào)用pdf部分代碼,使用死循環(huán)解決。
在調(diào)用webservice時(shí)常見的幾種異常原因
今天由于公司業(yè)務(wù),需要調(diào)用webservice服務(wù),一開始一直報(bào)錯(cuò),在網(wǎng)上搜集一些資料后,先整理如下:
問題1:
Java.lang.NoClassDefFoundError: javax/xml/soap/SOAPException,原因是沒有導(dǎo)入 axis2-saaj.jar包
問題2:
java.lang.NoClassDefFoundError: org/apache/commons/discovery/tools/DiscoverSingleton,原因是沒有 導(dǎo)入commons-discovery.jar包
問題3:
org.apache.commons.logging.LogFactory,原因是沒有導(dǎo)入commons-logging.jar包
問題4:
java.lang.NoClassDefFoundError: javax/xml/rpc/Service,原因是沒有導(dǎo)入jaxrpc.jar包(可以到axis官網(wǎng)下載對(duì)應(yīng)版本的axis,在其中的lib目錄可以找到);如果使用的是maven,可以導(dǎo)入org.apache.axis下的axis-jaxrpc-1.4.jar。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java?C++題解leetcode1441用棧操作構(gòu)建數(shù)組示例
這篇文章主要為大家介紹了Java?C++題解leetcode1441用棧操作構(gòu)建數(shù)組示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10java查詢近七日數(shù)據(jù)功能的實(shí)現(xiàn)
這篇文章主要介紹了java查詢近七日數(shù)據(jù)功能的實(shí)現(xiàn),文章內(nèi)容詳細(xì),簡(jiǎn)單易懂,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2023-01-01關(guān)于使用swagger整合springMVC的方法
在平時(shí)開發(fā)寫接口文檔的工作時(shí),一般都是word文檔,帶來書寫麻煩、維護(hù)麻煩的問題,比如改了源代碼忘了更新文檔、解釋不明確帶來歧義、無法在線嘗試等等,swagger可以有效解決這類問題,需要的朋友可以參考下2023-04-04String字符串拼接方法concat和+的效率對(duì)比
這篇文章主要介紹了String字符串拼接方法concat和+的效率對(duì)比,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12ConcurrentMap.putIfAbsent(key,value)用法實(shí)例
這篇文章主要介紹了ConcurrentMap.putIfAbsent(key,value)用法實(shí)例,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02mybatis攔截器實(shí)現(xiàn)通用權(quán)限字段添加的方法
這篇文章主要給大家介紹了關(guān)于mybatis攔截器實(shí)現(xiàn)通用權(quán)限字段添加的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mybatis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09