当前位置:  开发笔记 > 运维 > 正文

异步任务后合并期间出错

如何解决《异步任务后合并期间出错》经验,为你挑选了0个好方法。

我有一个基本上调用多个web服务的应用程序,存储从这些web服务接收的数据并将其呈现给用户.我有一个异步任务,调用所有的Web服务,它看起来像这样:

List t = new ArrayList()
def TIMEOUT_TIME = 6

    t[0] = task {
        def responseFrom0 = webserviceRequestService.getResponse(0)
        if(responseFrom0){
            return responseFrom0
        }
    }

    t[1] = task {
        def responseFrom1 = webserviceRequestService.getResponse(1)
        if(responseFrom1){
            return responseFrom1
        }
    }

动作getResponse看起来像这样:

    List result = new ArrayList()

    try {
        wsClient = prepareRequestMap()
        wsResponse = externalWebservice.getQuotes(wsClient)
        wsResponse.responseList.each  {
            ResponseResult responseResult = new ResponseResult()

            //populate properties of ResponseResult
            responseResult.save(failOnError:true, flush:true)
            result.add(responseResult)

        }

    } catch(Exception e){
        log.error e.message
        e.printStackTrace()
    }

    return result

最后,我收集了所有Web服务的响应,如下所示:

    result.each {
        if(it){
            try{
                it=it.merge()                                       
            }catch (Exception e){
                log.error("Error occured while merging responses... : ${e.message}")
            }

        }
    }

现在,这里的问题是我从最后一段代码中得到了这个例外

not-null属性引用null或transient值:ResponseResult.dateCreated; 嵌套异常是org.hibernate.PropertyValueException:not-null属性引用null或transient值:ResponseResult.dateCreated

dateCreated来自我在所有域类上实现的这个类.

abstract class AbstractPersistentObject implements Serializable{
    static final long serialVersionUID = 1L;    
    Date dateCreated
    Date lastUpdated    
}

关于这个问题的奇怪之处在于,这只发生在生产环境中,无论我做什么,我都无法在任何其他环境中复制它.而且,一旦发生这种情况,服务器只会在每次运行代码时抛出该特定问题,直到服务器重新启动.重启后,此代码正常工作.

我的想法已经用完,任何人都有任何想法?

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有