मैं अपने पोर्टल में कई जार का उपयोग कर रहा हूं, उदाहरण के लिए c3p0। अब मैं अपने प्रत्येक पोर्टल lib libers में जार डालने से बचना चाहता हूं। मैं एकाधिक पोर्टलों में एक जार फ़ाइल कैसे साझा कर सकता हूं? और मुझे ग्रहण आईडीई में उन्हें कैसे एकीकृत करना चाहिए? बाहरी जार जोड़ें या उन्हें एक समर्पित परियोजना में रखें और उन्हें वहां से शामिल करें?एकाधिक पोर्टलों के भीतर जार कैसे साझा करें?
उत्तर
एक अन्य समाधान के लिए उन्हें ../liferay-portal-<version>/tomcat-<version>/webapps/ROOT/WEB-INF/lib
के तहत डाल करने के लिए आप उन्हें यहाँ जगह आप (portlets liferay-plugin-package.properties
में अपने portlet के लिए एक निर्भरता के रूप में जार जोड़ें यदि आपने Liferay डेवलपर स्टूडियो या Liferay आईडीई तो उपयोग कर रहे हैं कर सकते हैं हो सकता है इसके लिए एक अच्छा जीयूआई है)।
तब तैनाती पर Liferay अपने portlets WEB-INF/lib
यह मेरा मानना है कि यह करने के लिए Liferay समर्थन तंत्र है, और पुन: प्रारंभ करने की आवश्यकता नहीं है क्योंकि जार portlets को कॉपी कर रहे हैं करने के लिए ROOT/WEB-INF/lib
से आवश्यक जार की प्रतिलिपि बनाएगा तैनाती पर classpath।
हाय जॉनी, यह बहुत अच्छा लगता है! मेरे पास केवल एक प्रश्न बाकी है: मैं अपने कंप्यूटर पर जार फ़ाइलों को विकास के दौरान कहां रखूं? मेरी जार फाइलों में क्लास फाइलें हैं जो मैं विधियों का उपयोग करना चाहता हूं (बेशक हाहा)। क्या मैं उन्हें अपने प्रोजेक्ट में "बाहरी जार" के रूप में जोड़ता हूं ताकि जावा कंपाइलर उन्हें एक्सेस करने के लिए सक्षम हो? – strauberry
मैं उन्हें वहां रखूंगा जहां कहीं भी आपको सबसे अच्छा सूट मिलती है, मेरे पास मेरे लिफ़ेरे प्लगइन्स-एसडीके में एक उपयोग/अतिरिक्त-libs फ़ोल्डर के तहत मेरा है। मेरे पास प्रत्येक व्यक्ति के लिए चींटी बिल्ड फ़ाइल भी है जो संकलित करता है, JARs, और फिर जार को रूट/वेब-आईएनएफ/lib में कॉपी करता है। तो जब पोर्टलेट को फिर से तैनात किया जाता है तो अद्यतन जेएआर पहले से ही पोर्टल पर कॉपी करने के लिए सही जगह पर है। हालांकि यदि आप लिफ़ेरे आईडीई का उपयोग नहीं कर रहे हैं, तो उन्हें "बिल्ड पथ कॉन्फ़िगर करें" अनुभाग में बाहरी जार के रूप में जोड़ें ... और चेकआउट Liferay IDE क्योंकि यह स्वचालित रूप से JARs उठाएगा! :) – Jonny
एक तरीका मैं सोच सकता हूं कि उन सभी को वैश्विक पथ में रखना है।
उदा। टॉमकैट में आप उन्हें ../liferay-portal-<version>/tomcat-<version>/lib/ext
पर रख सकते हैं और फिर जब आप ग्रहण में सर्वर-रनटाइम लाइब्रेरी को कॉन्फ़िगर करते हैं तो आपके पास इन जार आपके बिल्ड-पथ में होंगे।
यह link आपको निर्णय लेने में भी मदद कर सकता है, लेकिन यह *-service.jar
के लिए बोलता है लेकिन मुझे यकीन नहीं है कि यह किसी एक पोर्टलेट में अन्य जार काम करेगा।
आपके उत्तर के लिए धन्यवाद! क्या इसे तैनात करने के लिए ब्राउज़र इंटरफ़ेस का उपयोग करने का कोई तरीका है? मैं इस समय आमतौर पर उपयोग किए जाने वाले जार को बदल रहा हूं (भारी विकास) ताकि मैन्युअल प्रतिलिपि और पेस्ट और पुनरारंभ करना बहुत ही परेशान होगा ... – strauberry
वैश्विक वर्ग पथ में जा रहे जारों को सर्वर को फिर से लोड करने की आवश्यकता है। मैं आपकी आवश्यकता को प्राप्त करने के किसी अन्य तरीके के बारे में नहीं जानता। यद्यपि ऐसे उपकरण हैं जो सर्वर के पुनरारंभ किए बिना भी जार लोड करने में मदद करते हैं, इसलिए आप इन्हें देखने का प्रयास कर सकते हैं। –
उन्हें टॉमकैट/lib/ext में डालने से लाभ यह है कि तब सभी वेब ऐप्स एक ही कक्षा लोडर द्वारा लोड किए गए समान जार साझा करेंगे। यदि आप वेब अनुप्रयोगों के बीच कक्षाओं के उदाहरण पारित कर रहे हैं (उदाहरण के लिए सत्र के माध्यम से) यदि आप प्रत्येक वेबपैप की अपनी प्रतियां हैं तो आप क्लासकास्ट अपवादों में भाग सकते हैं। Lib/ext का उपयोग करने में दोष यह है कि सर्वर पुनरारंभ करने के लिए जार के नए संस्करणों को तैनात करने के लिए आवश्यक है। –
हाय स्ट्रॉबेरी, मेरे पास आपके लिए एक समाधान हो सकता है जो आपके बदलते जेएआर को बहुत समस्या का समाधान करेगा। मेरे पास एक ही स्थिति है! – Jonny