在webservice里調用耗時方法出錯的解決方案
webservice調用耗時方法出錯
在webservice里調用多個耗時的方法時,如果按順序執(zhí)行,下面的方法要等上面的方法執(zhí)行完畢才能執(zhí)行,如果這些方法比較耗時,并且包括回調等異步調用,就回出現(xiàn)下面的方法不能正確執(zhí)行,
實例代碼如下:
public String runMethod(String syncId) {
try {
//處理Datapull
dataPullService.setSyncId(syncId);
//設置數(shù)據庫參數(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ù)據,這個操作耗時,并且是異步的,會出現(xiàn)還沒有插入成功,下面的pdf執(zhí)行代碼查詢不到記錄導致調用pdf部分失敗。
解決方案是:
一直去查詢那張表,如果有記錄則調用pdf部分代碼,使用死循環(huán)解決。
在調用webservice時常見的幾種異常原因
今天由于公司業(yè)務,需要調用webservice服務,一開始一直報錯,在網上搜集一些資料后,先整理如下:
問題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官網下載對應版本的axis,在其中的lib目錄可以找到);如果使用的是maven,可以導入org.apache.axis下的axis-jaxrpc-1.4.jar。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot實現(xiàn)導出復雜對象到Excel文件
這篇文章主要為大家詳細介紹了如何使用Hutool和EasyExcel兩種方式來實現(xiàn)在Spring Boot項目中導出復雜對象到Excel文件,需要的小伙伴可以參考下2025-03-03
JavaWeb開發(fā)基于ssm的校園服務系統(tǒng)(實例詳解)
這篇文章主要介紹了JavaWeb開發(fā)基于ssm的校園服務系統(tǒng),本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02
SpringBoot?使用AOP?+?Redis?防止表單重復提交的方法
Spring?Boot是一個用于構建Web應用程序的框架,通過AOP可以實現(xiàn)防止表單重復提交,本文介紹了在Spring?Boot應用程序中使用AOP和Redis來防止表單重復提交的方法,需要的朋友可以參考下2023-04-04

