2009-04-01 22 views
10

के साथ जीडब्ल्यूटी मैं जीडब्ल्यूटी 1.5.3 का उपयोग कर डेटाबेस एप्लिकेशन बनाने की कोशिश कर रहा हूं। मैं अपनी वस्तुओं के साथ जेपीए एनोटेशन का उपयोग करता हूं। ऐसा लगता है कि होस्टेड मोड में जीडब्ल्यूटी का आरपीसी ठीक काम करता है। लेकिन जब मैं जीडब्ल्यूटी-कंपाइलर का उपयोग करके अपने ऐप को संकलित करने का प्रयास करता हूं तो मुझे त्रुटियां मिलती हैं: "आयात javax.persistence को हल नहीं किया जा सकता", "इकाई को किसी प्रकार से हल नहीं किया जा सकता"। toplink-essentials.jar पहले से ही मेरे प्रोजेक्ट पथ में शामिल है। इस समस्या को हल करने के लिए मुझे और किन सेटिंग्स की आवश्यकता है?जेडए

उत्तर

1

ठीक है, मैंने पाया कि मैं क्या याद आ रही थी। मुझे myapp-compile.cmd स्क्रिप्ट (या चींटी बिल्ड फ़ाइल में) में मेरे जीडब्ल्यूटी-कंपाइलर पथ में jpa-annotations-source.jar शामिल करने की आवश्यकता है। वैसे भी कोई मुझे इस जेपीए-एनोटेशन-स्रोत.जर फ़ाइल की उत्पत्ति बता सकता है?

+2

इसके अलावा, मुझे यह कहना चाहिए कि जीडब्ल्यूटी 1.5 में उपर्युक्त जार को शामिल करने की आवश्यकता नहीं है। इसके बजाय बस उत्पादन जार का उपयोग करें जैसे कि toplink-essentials.jar; निश्चित रूप से इसे संकलित करने के लिए अपने जीडब्ल्यूटी-कंपाइलर को पास करें; और अपने app.gwt.xml में <विरासत नाम = 'javax.Persistence'> लिखें – synergetic

6

आपको अपने जीडब्ल्यूटी परियोजना के निर्माण पथ में जेपीए एनोटेशन के लिए स्रोत कोड शामिल करने की आवश्यकता है। यहाँ अधिक जानकारी के लिए देखें:

http://code.google.com/p/google-web-toolkit/issues/detail?id=1830&can=1&q=jpa

विशेष रूप से इस जार फ़ाइल जो आपकी समस्या का समाधान होगा:

http://google-web-toolkit.googlecode.com/issues/attachment?aid=1475633892125294312&name=jpa-annotations-source.jar

+0

को

<source path='javax.persistence'/> 

जोड़ने के लिए लिंक करने के लिए http बदल गया है की जरूरत है: // google-वेब toolkit.googlecode.com/issues/attachment?aid=1475633892125294312&name=jpa-annotations-source.jar&token=672fe08de2c4a90493f62b6daaf3ae1e। इस तरह के लिंक पर निर्भर नहीं होना चाहिए क्योंकि वे समय-समय पर गतिशील रूप से पुनर्जीवित होते हैं। "Jpa-annotations-source.jar google-web-toolkit.googlecode.com/issues/attachment" के लिए Google होना चाहिए। –

9

आप जीडब्ल्यूटी के साथ जेपीए इकाइयों को सहजता से प्रबंधित करने के लिए गिलियड (http://sourceforge.net/projects/gilead/) लाइब्रेरी का उपयोग कर सकते हैं।

सादर

1

मैं भी जेपीए < साथ काम कर रहा हूँ -> GWT डेटा परिवर्तन आदि

डीटीओ परत मैं गिलियड भी इस्तेमाल किया खत्म करने के प्रयास में।

मेरा आपत्ति यहां javax.persistence अनुवाद करने के बारे में है। इससे बचने के लिए मैंने एक्सएमएल जेपीए मैपिंग घोषणाओं (orm.xml)

2

जेपीए और जीडब्ल्यूटी की सामान्य समस्या यह है कि जीडब्ल्यूटी स्वयं फैंसी जेपीए कक्षाओं का समर्थन नहीं करता है, इसलिए आप सरल पीओजेओ लगातार संस्थाएं डीटीओ करते हैं जो लागू करता है java.io.Serializable और सरल जेपीए संसाधन एनोटेशन है। आप या तो yourproject.client पैकेज के तहत यह है या उन्हें

स्रोत पथ = "ग्राहक"

स्रोत पथ = "folderOfYourEntities"

साथ जोड़ने GWT ग्राहक के दायरे में इकाई वर्गों बनाने की जरूरत GWT प्रोजेक्ट की YouProject.gwt.xml फ़ाइल में

। इसमें जीडब्ल्यूटी क्लाइंट में इकाई ऑब्जेक्ट्स शामिल होंगे ताकि वे आरपीसी के क्लाइंट साइड पर भी उनका इस्तेमाल कर सकें। डीएओ सर्वर की तरफ होना चाहिए और इसमें कुछ भी शामिल हो सकता है जिसे आप कंटेनर का समर्थन करते हैं।

अब आपके पास समस्या यह है कि संकलित करते समय, जीडब्ल्यूटी कंपाइलर ने कहा कि यह नहीं पता कि जेपीए एनोनेशन के लिए उन आयातों को डीटीओ कक्षाओं में क्या करना है। यही कारण है कि आपको javax.persistence वर्ग और स्रोत कोड की आवश्यकता है। Rustmyself द्वारा jpa-annotation-source.jar संदर्भ काम करता है। यह सिर्फ javax.persistence संकलित वर्ग फ़ाइलों और स्रोत कोड फाइलों और एक Persistence.gwt.xml संकलित है। यह javax.persistence पैकेज के लिए एक साधारण जीडब्ल्यूटी मॉड्यूल है। यदि आप जानते हैं कि अपना खुद का जीडब्ल्यूटी मॉड्यूल कैसे बनाना है, तो आपको यह सब काम करने में समस्या होनी चाहिए। वैसे, जावा ईई के लिए आधिकारिक स्रोत ग्लासफ़िश देव साइट के निर्माण खंड पर पाया जा सकता है wiki.glassfish.java.net

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

GWTPersistence उदाहरण
मैं कैसे GWT और जेपीए समेकित रूप से काम करने के बारे में एक वास्तविक काम कर उदाहरण जोड़ लिया है। यह स्रोत कोड और तैनाती फ़ाइल के साथ नेटबीन प्रोजेक्ट है। GWTPersistence on NingZhang.info

1

बस, अपनी संस्थाओं का एक और संस्करण रखें लेकिन एनोटेशन के बिना!

-1

synergetic की टिप्पणी पर Rebounding, अब आप (GWT 1.5 से) केवल अपने Module.gwt.xml