2015-12-21 15 views
5

के बाद विलय के दौरान त्रुटि मेरे पास एक ऐसा एप्लिकेशन है जो मूल रूप से एकाधिक webservices को कॉल करता है, उन webservices से प्राप्त डेटा संग्रहीत करता है और इसे उपयोगकर्ता को प्रस्तुत करता है। मैं एक async कार्य है कि सभी webservices फोन है और यह इस तरह दिखता है:एसिंक कार्य

List<Promise> t = new ArrayList<Promise>() 
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<ResponseResult> result = new ArrayList<TravelQuote>() 

    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 

और अंत में, मैं से सभी प्रतिक्रियाओं को इकट्ठा इस तरह सभी webservices:

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

     } 
    } 

अब, यहां मुद्दा यह है मैं कोड के अंतिम ब्लॉक से इस अपवाद मिलता है

गैर-शून्य संपत्ति संदर्भ शून्य या क्षणिक मान का संदर्भ देता है: ResponseResult.dateCreated; नेस्टेड अपवाद org.hibernate.PropertyValueException है: नहीं-अशक्त संपत्ति एक अशक्त या क्षणिक मानों का संदर्भ: ResponseResult.dateCreated

DateCreated इस वर्ग के जो मैं अपने डोमेन कक्षाओं के सभी पर लागू किया है से आता है।

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

इस मुद्दे के बारे अजीब बात यह केवल उत्पादन वातावरण पर होता है, कोई फर्क नहीं पड़ता कि मुझे क्या करना है, मैं किसी अन्य के वातावरण में इस को दोहराने नहीं कर सकते, है। और साथ ही, ऐसा होने पर, सर्वर तब भी उस विशेष समस्या को फेंक देता है जब तक कि सर्वर पुनरारंभ होने तक कोड चलाया जाता है। पुनरारंभ करने के बाद, यह कोड ठीक काम करता है।

मैं विचारों से बाहर हूं, किसी के पास कोई विचार है?

+0

क्या आप जिस डोमेन कक्षाओं को सहेज रहे हैं, उससे डीटीओ को अलग करना बेहतर नहीं है? क्या होता है यदि आप एक डोमेन क्लास को सहेजते हैं जो Serializable लागू नहीं करता है? –

+0

क्या आपने प्रत्येक कंक्रीट डोमेन क्लास में मैपिंग ब्लॉक में 'autoTimestamp true' जोड़कर autoTimestamp सुविधा को बल-सक्षम करने का प्रयास किया है? –

+0

मैंने डेट करके सीधे दिनांकित करने की कोशिश की, प्रतिक्रियाResult.dateCreated = नई तिथि(), ऐसा करने के बाद, मुझे यह त्रुटि मिली कि यह शून्य संपत्ति 'आईडी' –

उत्तर

2

उत्तर अपवाद में दिखाई देता है: बाहरी वेब सेवा दिनांक के लिए मूल्य के बिना रिकॉर्ड (ओं) लौटाती है।

उत्पादन वातावरण से मेरे अनुभव डेटा में लगभग हमेशा गायब या अनुचित रूप से स्वरूपित मान होते हैं। आपको इसके लिए जवाब देना चाहिए ResponseResult.dateCreated की परिभाषा को शून्य मानों को अनुमति देने के लिए और इस परिदृश्य को अपने कोड में संभाल लें।

+0

नहीं मिल सका वेब-सेवा प्रतिक्रिया दिनांक निर्धारित नहीं है, यह सेट है स्वचालित रूप से AbstractPersistentObject क्लास द्वारा रिकॉर्ड डालने से पहले, मैंने इसे मैन्युअल रूप से सेट करने का प्रयास किया लेकिन आईडी फ़ील्ड के लिए एक ही त्रुटि प्राप्त की। –

संबंधित मुद्दे