2012-07-19 16 views
5

मेरे पास एक जावा वेब एप्लिकेशन है जो दो ईएआर में तैनात है - एक यूआई टियर (एक डब्ल्यूएआर मॉड्यूल है) और एक व्यवसाय स्तर के लिए (एक ईजेबी मॉड्यूल)। दोनों स्तरों को वेबस्पेयर अनुप्रयोग सर्वर 7 पर तैनात किया गया है। स्तर ईजेबी 3.0 स्टेटलेस सत्र बीन्स के माध्यम से जुड़े हुए हैं। बीएनएस जेएनडीआई के माध्यम से देखा जाता है।ईजेबी रिमोट विधि में मिस्मिटेड सीरियलाइजेशन यूआईडी - java.util.date और DBTimestamp

हम दृढ़ता के लिए हाइबरनेट का उपयोग करते हैं, और एक डीबी 2 डेटाबेस।

जब दूरस्थ EJB कॉल दिया जाता है, तो निम्न त्रुटि क्लाइंट की तरफ होती है:

java.rmi.MarshalException: CORBA MARSHAL 0x4942f896 No; nested exception is: 
    org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge : Mismatched serialization UIDs : Source (RepId RMI:java.util.Date:AC117E28FE36587A:686A81014B597419) = 686A81014B597419 whereas Target (RepId RMI:com.ibm.db2.jcc.DBTimestamp:AA774DBE96ECCE99:7AFCE1FB570D419C) = 7AFCE1FB570D419C vmcid: IBM minor code: 896 completed: No 

वस्तु पर java.util.Date क्षेत्र एक com.ibm.db2.jcc.DBTimestamp क्षेत्र है, जो java.sql.Timestamp फैली जो java.util.Date फैली रूप में हाइबरनेट से लौटे किया जा रहा है । चूंकि यह java.util.Date का उप-वर्ग है और धारावाहिक है, इसे संभाला नहीं जाना चाहिए?

मैंने एक और अनुभव व्यक्ति से बात की है जिसने कहा है कि संभावित कारण यह है कि JVM संस्करण या DBTimestamp वर्ग संस्करण वेब और व्यवसाय स्तर WAS सर्वर के बीच अलग है। दोनों सर्वरों में एक ही JVM, WAS, और JAR संस्करण है।

मेरे पास एक स्थानीय WAS 7 सर्वर भी है, जहां दोनों स्तर एक ही सर्वर पर तैनात किए जाते हैं। ईजेबी अभी भी स्थानीयहोस्ट को जेएनडीआई कॉल के माध्यम से दूरस्थ रूप से हल कर रहे हैं। एप्लिकेशन मेरे स्थानीय सर्वर पर ठीक काम करता है। एकमात्र अंतर जो मुझे पता है, WAS का एक अलग माइक्रो-संस्करण है, साथ ही साथ दोनों सर्वरों को उसी सर्वर पर तैनात करना है।

समस्या का कारण क्या है? क्या यह है कि DBTimestamp कक्षा वेब स्तर पर नहीं मिल सकती है, या कक्षा का संस्करण अलग है? या यह polymorphism, या पूरी तरह से कुछ और के साथ एक मुद्दा है?

एक उत्तर के अलावा, मैं कोशिश करने के लिए डिबगिंग पर किसी भी सलाह की भी सराहना करता हूं - मैं विचारों से बाहर हूं।

उत्तर

2

मैंने वेब स्तरीय ईएआर में प्रासंगिक डीबी 2 ड्राइवर जेएआर को पैकेजिंग करके समस्या को ठीक करने में कामयाब रहा है।

समस्या का कारण इसलिए है कि कक्षा वेब स्तरीय कक्षा के कक्षा में उपलब्ध नहीं थी। मुझे यह पता लगाने के लिए पर्यावरण के सेटअप की जांच करने की आवश्यकता होगी कि यह क्यों उपलब्ध नहीं है, लेकिन कम से कम समस्या अभी स्पष्ट है।

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