gwt rpc - Is there a way to GWT compiler/serializer/linker issue? -


चलो कहना है कि मेरे पास एक वर्ग है ...

com.mycom.app.AbstractMessage

com.mycom.model.QueryResponse

QueryResponse में एक अन्य वर्ग है, अब abstractmessage का विस्तार और नोटिस वे

com.mycom.model एक जीडब्ल्यूटी मॉड्यूल और मॉड्यूल XML में है

जब मैं मॉडल संकलित करता हूं तो त्रुटियाँ हैं I हालांकि जब मैं किसी अन्य जीडब्ल्यूटी मॉड्यूल में क्वेरी रिप्सन का उपयोग करने का प्रयास करता हूं, तो मुझे रनटाइम त्रुटियां मिलती हैं

"कॉम के लिए कोई स्रोत कोड उपलब्ध नहीं है। Com.mycom.app.AbstractMessage; क्या आपने एक आवश्यक मॉड्यूल "

यह मुझे यह विश्वास करने के लिए उधार देता है कि एब्स्ट्रमैटमैसेज को समझना शुरू करने का अधिकार संकलित / संकलित नहीं किया गया था क्योंकि मैं" ऐप "पैकेज जीडब्ल्यूटी मॉड्यूल नहीं करना चाहता था

दूसरे शब्दों में, मैं केवल सभी वर्गों को "मॉडल" में संकलित करना चाहता हूं और किसी भी सुपर कक्षाओं में नहीं। मैं ऐसा करने के लिए GWT compiler / rpc / linker / serializer आदि को कैसे बता सकता हूं?

अर्थात् क्या जीडब्ल्यूटी को यह कहने का कोई तरीका है कि जब वह धारावाहिक / संकलन कर रहा है, तो कुछ निश्चित कक्षाओं से आगे नहीं चलना

मैं यह एक स्रोत पर्यावरण कर रहा हूं जहां हमारे पास बहुत सारे संकुल हैं, अधिकतर उनमें से केवल मॉडल पर निर्भर हैं और मैं प्रत्येक पैकेज से जीडब्ल्यूटी मॉड्यूल बनाना नहीं चाहता, बस इतना ही संकलित होता है।

किसी को भी विचार?

मैंने इस पर थोड़ा शोध किया है, आप सही हैं जीडब्ल्यूटी एक सार वर्ग के सभी कार्यान्वयनों के लिए दिखेगा, अगर और केवल तभी, एब्स्ट्रक्टल का संदर्भ संदर्भ में है एक RPC GWTAsync इंटरफ़ेस, भले ही कुछ गैर-जीडब्ल्यूटी पैकेज में हों।

मान लीजिए कि एब्जेक्टक्लास का एक ऑब्जेक्ट नेटवर्क पर आता है, और जीडब्ल्यूटी डीसेलाइलाइजर को अब नेटवर्क डेटा को एक विशिष्ट उदाहरण। अब एब्स्ट्रक्लस के सभी कार्यान्वयनों के बारे में जानना आवश्यक है, यह जानने के लिए कि अभी नेटवर्क पर क्या आ रहा है! - ऐसा करने के लिए, संकलन में, प्रत्येक जीडब्ल्यूटी सेवा अंतरफलक के लिए एक .आरपीसी फ़ाइल उत्पन्न करता है, जो सभी संभावित कंक्रीट प्रकारों को सूचीबद्ध करता है, जो कि सेवा के तरीकों को वापस कर सकते हैं।

रे रयान (Google कर्मचारी) ने एक बार उल्लेख किया यह किसी भी RPC इंटरफ़ेस में इंटरफेस तर्क या वापसी प्रकार का उपयोग करने के लिए एक बुरा विचार है। - क्योंकि यह deserializer के लिए सटीक प्रकार को जानने में मुश्किल बनाता है।

आप जनरेटेड आरपीसी फ़ाइल को संपादित कर सकते हैं और अपमानजनक प्रकारों को निकाल सकते हैं, या अन्य क्रियान्वयनों को गैर सीरियलजबल के रूप में चिह्नित कर सकते हैं, अन्य पैकेजों में कार्यान्वयन।

एक बेहतर तरीका हो सकता है - मुझे संदेह है आपने कोड लिखा था: शीर्ष स्तर पर "java.io.Serializable लागू करता है" (एबर्टक्लस के लिए ही), शायद अब इसे स्थानांतरित करने का समय है प्रत्येक कार्यान्वयन के लिए।

अब GWT RPC deserializer का कार्य स्पष्ट और सरल है - यह जानता है कि एब्स्ट्रक्लस के केवल कुछ लागूकरण (जो क्रमबद्ध हैं) नेटवर्क पर आ जाएगा, और उन तक पहुंच और संकलित करें तो यह आपके एब्स्ट्रकक्लास की अन्य गैर-सीरियलाइज़ेबल उपसंकल्प को संकलित नहीं करेगा- क्योंकि यह जानता है कि वे सीरियलाइज करने योग्य नहीं हैं।

Comments