在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í)行完畢會在某個(gè)表里插入一條數(shù)據(jù),這個(gè)操作耗時(shí),并且是異步的,會出現(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)下載對應(yīng)版本的axis,在其中的lib目錄可以找到);如果使用的是maven,可以導(dǎo)入org.apache.axis下的axis-jaxrpc-1.4.jar。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java中阻塞隊(duì)列和非阻塞隊(duì)列的實(shí)現(xiàn)
在Java并發(fā)編程中,阻塞隊(duì)列和非阻塞隊(duì)列是兩種主要的隊(duì)列類型,分別適用于不同的場景,了解這兩種隊(duì)列的特點(diǎn)和工作機(jī)制,可以幫助開發(fā)者更好地選擇合適的數(shù)據(jù)結(jié)構(gòu)解決并發(fā)問題2024-10-10
SpringBoot實(shí)現(xiàn)導(dǎo)出復(fù)雜對象到Excel文件
這篇文章主要為大家詳細(xì)介紹了如何使用Hutool和EasyExcel兩種方式來實(shí)現(xiàn)在Spring Boot項(xiàng)目中導(dǎo)出復(fù)雜對象到Excel文件,需要的小伙伴可以參考下2025-03-03
解決SpringBoot項(xiàng)目在啟動(dòng)后自動(dòng)關(guān)閉的問題
今天搭建了一個(gè)SpringBoot項(xiàng)目,但是在啟動(dòng)之后就自行關(guān)閉了,下面通過本文給大家介紹SpringBoot項(xiàng)目在啟動(dòng)后自動(dòng)關(guān)閉問題及解決方法,需要的朋友可以參考下2023-08-08
JavaWeb開發(fā)基于ssm的校園服務(wù)系統(tǒng)(實(shí)例詳解)
這篇文章主要介紹了JavaWeb開發(fā)基于ssm的校園服務(wù)系統(tǒng),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
SpringBoot?使用AOP?+?Redis?防止表單重復(fù)提交的方法
Spring?Boot是一個(gè)用于構(gòu)建Web應(yīng)用程序的框架,通過AOP可以實(shí)現(xiàn)防止表單重復(fù)提交,本文介紹了在Spring?Boot應(yīng)用程序中使用AOP和Redis來防止表單重復(fù)提交的方法,需要的朋友可以參考下2023-04-04

