我有一个基本上调用多个web服务的应用程序,存储从这些web服务接收的数据并将其呈现给用户.我有一个异步任务,调用所有的Web服务,它看起来像这样:
Listt = 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看起来像这样:
Listresult = 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 }
关于这个问题的奇怪之处在于,这只发生在生产环境中,无论我做什么,我都无法在任何其他环境中复制它.而且,一旦发生这种情况,服务器只会在每次运行代码时抛出该特定问题,直到服务器重新启动.重启后,此代码正常工作.
我的想法已经用完,任何人都有任何想法?