2016-03-22 12 views
6

मैं सीडीआई प्रबंधित बीन्स का उपयोग करने के लिए जेएसएफ प्रबंधित बीन का उपयोग करने से एक वेब ऐप को बदलने की योजना बना रहा हूं। मुझे पता है कि मुझे नीचे करने की आवश्यकता होगी:सीडीआई प्रबंधित बीन्स को जेएसएफ प्रबंधित बीन्स माइग्रेट करें

  1. वेब-आईएनएफ में एक खाली beans.xml फ़ाइल जोड़ें।
  2. सभी जेएसएफ @ मैनेज्डबीन को सीडीआई @ नामांकित एनोटेशन में बदलें।
  3. सीडीआई या ओमनीफेस स्कोप एनोटेशन के साथ सभी जेएसएफ स्कोप एनोटेशन को बदलें।
  4. सीडीआई @ इंजेक्शन एनोटेशन के साथ सभी जेएसएफ @ मैनेज्ड प्रॉपर्टी को बदलें।

क्या यह सब कुछ करने की आवश्यकता है? क्या कोई गठिया है जिसके बारे में मुझे अवगत होना चाहिए?

+0

उत्तर इस्तेमाल किए गए सर्वर पर निर्भर करता है। उदा। टॉमकैट आपको सीडीआई भी स्थापित करना होगा। – BalusC

+0

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

उत्तर

3

असल में, यह वास्तव में आपको यह करने की ज़रूरत है कि आप जावा ईई सर्वर पर पहले से ही हैं। जब टोमकैट पर, आपको पहले सीडीआई मैन्युअल रूप से स्थापित करने की आवश्यकता होगी। दोनों वेल्ड और OpenWebBeans के लिए निर्देश ब्लॉग में विस्तृत How to install CDI in Tomcat?

नीचे gotchas का ध्यान रखा जाना चाहिए:

  • जबकि OmniFaces 2.x "आधिकारिक तौर पर" JSF 2.2, OmniFaces 2.0/2.1 है की आवश्यकता है जेएसएफ 2.1 के साथ तकनीकी रूप से पिछड़ा संगत और जेएसईई 2.1 के साथ टॉमईई 1.x पर टॉमईई के मामले में काम करना चाहिए, लेकिन ओमनीफेस 2.2 में हार्ड जेएसएफ 2.2 निर्भरता है (नए <o:viewAction> टैग के कारण) और टॉमई 1.x पर तैनात नहीं होगा अपने माइफेस जेएसएफ कार्यान्वयन को 2.2 संगत संस्करण में अपग्रेड किए बिना, या खुद को टॉमई 7.x में अपग्रेड किया जा रहा है। OmniFaces Compatibility Matrix भी देखें।

  • जब आप अपनी स्वयं की ओमनीफेस लाइब्रेरी के साथ कई WARs के साथ एक ईएआर तैनात करते हैं, तो आम तौर पर सभी सीडीआई कार्यक्षमता केवल एक युद्ध में काम करेगी क्योंकि एक युद्ध-प्रदान की गई लाइब्रेरी के सीडीआई संदर्भ को गलत तरीके से ईएआर-वाईड के रूप में व्याख्या किया जाता है। यह सीडीआई स्पेक में एक निरीक्षण है और अभी तक भविष्य में सीडीआई संस्करण में तय किया जाना है। OmniFaces Known Issues (CDI) भी देखें।

  • आप @FacesConverter या @FacesValidator में OmniFaces-प्रदान की CDI इंजेक्शन समर्थन उपयोग करना चाहते हैं, और आपके द्वारा बनाए जा रहे हैं जब/एक CDI 1.1 संगत beans.xml (और इस तरह नहीं एक CDI 1.0 संगत एक या एक खाली एक) का उपयोग करें, तो आपको यह सुनिश्चित करने की ज़रूरत है कि आपने को beans.xml में स्पष्ट रूप से सेट किया है। @FacesConverter showcase भी देखें।

  • @ManagedBean(eager=true) की जगह लेते समय, ध्यान रखें कि मानक सीडीआई के लिए इसके बराबर नहीं है। OmniFaces उद्देश्य के लिए @Eager एनोटेशन प्रदान करता है।

  • जब @ManagedProperty की जगह है, कि तुम #{param.xxx}, #{cookie.xxx} और #{initParam.xxx} सीधे अकेले @Inject के माध्यम से इंजेक्षन नहीं कर सकता है, जबकि यह सिर्फ @ManagedProperty के माध्यम से संभव हो गया था बारे में पता होना। उद्देश्य के लिए OmniFaces क्रमश: @Param, @Cookie और @ContextParam प्रदान करता है।

+0

धन्यवाद बलुस। मैंने 1 - 4 किया, और कुछ परीक्षण किए हैं और सभी काम कर रहे हैं। उस निर्बाध होने के लिए आश्चर्यचकित।साइड नोट: मैंने हाल ही में इस ऐप को वेबस्पेयर 8.1 (myfaces2.0) से TOMEE 1.7 (myfaces 2.1.17) में माइग्रेट किया है। तब से, हम स्मृति समस्या का सामना कर रहे हैं। अधिकतम आउट ढेर के कारण, एक सप्ताह चलने के बाद टोमेई सर्वर लटका हुआ है। मैंने मेमोरी डंप में बहुत सारे विचारों को देखा। मैं उम्मीद कर रहा हूं कि omnifaces के विचारों को इस मुद्दे को खत्म करने में मदद कर सकते हैं। मुझे समझ में नहीं आता कि वेबस्पेयर में समस्या क्यों नहीं हो रही है। ओह ठीक है, पॉइंटर्स के लिए धन्यवाद। –

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