在webservice里调用耗时方法出错的解决方案

 更新时间:2021年07月30日 09:35:14   作者:王伟AHSS  
这篇文章主要介绍了在webservice里调用耗时方法出错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

webservice调用耗时方法出错

在webservice里调用多个耗时的方法时,如果按顺序执行,下面的方法要等上面的方法执行完毕才能执行,如果这些方法比较耗时,并且包括回调等异步调用,就回出现下面的方法不能正确执行,

实例代码如下:

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。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java中阻塞队列和非阻塞队列的实现

    java中阻塞队列和非阻塞队列的实现

    在Java并发编程中,阻塞队列和非阻塞队列是两种主要的队列类型,分别适用于不同的场景,了解这两种队列的特点和工作机制,可以帮助开发者更好地选择合适的数据结构解决并发问题
    2024-10-10
  • SpringBoot实现导出复杂对象到Excel文件

    SpringBoot实现导出复杂对象到Excel文件

    这篇文章主要为大家详细介绍了如何使用Hutool和EasyExcel两种方式来实现在Spring Boot项目中导出复杂对象到Excel文件,需要的小伙伴可以参考下
    2025-03-03
  • 解决SpringBoot项目在启动后自动关闭的问题

    解决SpringBoot项目在启动后自动关闭的问题

    今天搭建了一个SpringBoot项目,但是在启动之后就自行关闭了,下面通过本文给大家介绍SpringBoot项目在启动后自动关闭问题及解决方法,需要的朋友可以参考下
    2023-08-08
  • Java 详解异常的处理机制

    Java 详解异常的处理机制

    异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如你的代码少一个分号,那运行出来结果是提示是错误 java.lang.Error;如果你用System.out.println(11/0),那你是因为用0做了除数,会抛出 java.lang.ArithmeticException 的异常
    2021-11-11
  • java 二分法详解几种实现方法

    java 二分法详解几种实现方法

    这篇文章主要介绍了java 二分法详解几种方法的相关资料,需要的朋友可以参考下
    2017-02-02
  • Java NIO服务器端开发详解

    Java NIO服务器端开发详解

    这篇文章主要介绍了Java NIO服务器端开发详解,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • JavaWeb开发基于ssm的校园服务系统(实例详解)

    JavaWeb开发基于ssm的校园服务系统(实例详解)

    这篇文章主要介绍了JavaWeb开发基于ssm的校园服务系统,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • Spring P标签的使用详解

    Spring P标签的使用详解

    这篇文章主要介绍了Spring P标签的使用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • JAVA中List.addAll的基本语法与用法详解

    JAVA中List.addAll的基本语法与用法详解

    这篇文章主要给大家介绍了关于JAVA中List.addAll的基本语法与用法的相关资料,需要的朋友可以参考下
    2024-06-06
  • SpringBoot 使用AOP + Redis 防止表单重复提交的方法

    SpringBoot 使用AOP + Redis 防止表单重复提交的方法

    Spring Boot是一个用于构建Web应用程序的框架,通过AOP可以实现防止表单重复提交,本文介绍了在Spring Boot应用程序中使用AOP和Redis来防止表单重复提交的方法,需要的朋友可以参考下
    2023-04-04

最新评论