在webservice里調用耗時方法出錯的解決方案
webservice調用耗時方法出錯
在webservice里調用多個耗時的方法時,如果按順序執(zhí)行,下面的方法要等上面的方法執(zhí)行完畢才能執(zhí)行,如果這些方法比較耗時,并且包括回調等異步調用,就回出現(xiàn)下面的方法不能正確執(zhí)行,
實例代碼如下:
public String runMethod(String syncId) { try { //處理Datapull dataPullService.setSyncId(syncId); //設置數(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轉換 ofdService.setSyncId(syncId); ofdService.setServerUrl(Config.getStringValue("serverUrl")); ofdService.run(); //判斷OFD文件是否轉換完成 while(true) { if(serviceManager.isHasOFD(syncId)) { break; } } //處理pdf轉換 pdfService.setSyncId(syncId); pdfService.setServerUrl(Config.getStringValue("serverUrl")); pdfService.run(); }catch(Exception e) { return "error "+syncId; } return "success "+syncId; }
在上面的方法里,處理ofd的代碼執(zhí)行完畢會在某個表里插入一條數(shù)據(jù),這個操作耗時,并且是異步的,會出現(xiàn)還沒有插入成功,下面的pdf執(zhí)行代碼查詢不到記錄導致調用pdf部分失敗。
解決方案是:
一直去查詢那張表,如果有記錄則調用pdf部分代碼,使用死循環(huán)解決。
在調用webservice時常見的幾種異常原因
今天由于公司業(yè)務,需要調用webservice服務,一開始一直報錯,在網(wǎng)上搜集一些資料后,先整理如下:
問題1:
Java.lang.NoClassDefFoundError: javax/xml/soap/SOAPException,原因是沒有導入 axis2-saaj.jar包
問題2:
java.lang.NoClassDefFoundError: org/apache/commons/discovery/tools/DiscoverSingleton,原因是沒有 導入commons-discovery.jar包
問題3:
org.apache.commons.logging.LogFactory,原因是沒有導入commons-logging.jar包
問題4:
java.lang.NoClassDefFoundError: javax/xml/rpc/Service,原因是沒有導入jaxrpc.jar包(可以到axis官網(wǎng)下載對應版本的axis,在其中的lib目錄可以找到);如果使用的是maven,可以導入org.apache.axis下的axis-jaxrpc-1.4.jar。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java?C++題解leetcode1441用棧操作構建數(shù)組示例
這篇文章主要為大家介紹了Java?C++題解leetcode1441用棧操作構建數(shù)組示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10java查詢近七日數(shù)據(jù)功能的實現(xiàn)
這篇文章主要介紹了java查詢近七日數(shù)據(jù)功能的實現(xiàn),文章內容詳細,簡單易懂,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2023-01-01ConcurrentMap.putIfAbsent(key,value)用法實例
這篇文章主要介紹了ConcurrentMap.putIfAbsent(key,value)用法實例,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-02-02