webservice调用耗时方法出错
在webservice里调用多个耗时的方法时,如果按顺序执行,下面的方法要等上面的方法执行完毕才能执行,如果这些方法比较耗时,并且包括回调等异步调用,就回出现下面的方法不能正确执行,
实例代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
public String runMethod(String syncId) {
try {
//处理Datapull
dataPullService.setSyncId(syncId);
//设置数据库参数
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的代码执行完毕会在某个表里插入一条数据,这个操作耗时,并且是异步的,会出现还没有插入成功,下面的pdf执行代码查询不到记录导致调用pdf部分失败。
解决方案是:
一直去查询那张表,如果有记录则调用pdf部分代码,使用死循环解决。
在调用webservice时常见的几种异常原因
今天由于公司业务,需要调用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。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/andy_67/article/details/77530960