2012-09-10 36 views
6

मैं अपने पोर्टल में कई जार का उपयोग कर रहा हूं, उदाहरण के लिए c3p0। अब मैं अपने प्रत्येक पोर्टल lib libers में जार डालने से बचना चाहता हूं। मैं एकाधिक पोर्टलों में एक जार फ़ाइल कैसे साझा कर सकता हूं? और मुझे ग्रहण आईडीई में उन्हें कैसे एकीकृत करना चाहिए? बाहरी जार जोड़ें या उन्हें एक समर्पित परियोजना में रखें और उन्हें वहां से शामिल करें?एकाधिक पोर्टलों के भीतर जार कैसे साझा करें?

+0

हाय स्ट्रॉबेरी, मेरे पास आपके लिए एक समाधान हो सकता है जो आपके बदलते जेएआर को बहुत समस्या का समाधान करेगा। मेरे पास एक ही स्थिति है! – Jonny

उत्तर

6

एक अन्य समाधान के लिए उन्हें ../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।

+0

हाय जॉनी, यह बहुत अच्छा लगता है! मेरे पास केवल एक प्रश्न बाकी है: मैं अपने कंप्यूटर पर जार फ़ाइलों को विकास के दौरान कहां रखूं? मेरी जार फाइलों में क्लास फाइलें हैं जो मैं विधियों का उपयोग करना चाहता हूं (बेशक हाहा)। क्या मैं उन्हें अपने प्रोजेक्ट में "बाहरी जार" के रूप में जोड़ता हूं ताकि जावा कंपाइलर उन्हें एक्सेस करने के लिए सक्षम हो? – strauberry

+0

मैं उन्हें वहां रखूंगा जहां कहीं भी आपको सबसे अच्छा सूट मिलती है, मेरे पास मेरे लिफ़ेरे प्लगइन्स-एसडीके में एक उपयोग/अतिरिक्त-libs फ़ोल्डर के तहत मेरा है। मेरे पास प्रत्येक व्यक्ति के लिए चींटी बिल्ड फ़ाइल भी है जो संकलित करता है, JARs, और फिर जार को रूट/वेब-आईएनएफ/lib में कॉपी करता है। तो जब पोर्टलेट को फिर से तैनात किया जाता है तो अद्यतन जेएआर पहले से ही पोर्टल पर कॉपी करने के लिए सही जगह पर है। हालांकि यदि आप लिफ़ेरे आईडीई का उपयोग नहीं कर रहे हैं, तो उन्हें "बिल्ड पथ कॉन्फ़िगर करें" अनुभाग में बाहरी जार के रूप में जोड़ें ... और चेकआउट Liferay IDE क्योंकि यह स्वचालित रूप से JARs उठाएगा! :) – Jonny

2

एक तरीका मैं सोच सकता हूं कि उन सभी को वैश्विक पथ में रखना है।

उदा। टॉमकैट में आप उन्हें ../liferay-portal-<version>/tomcat-<version>/lib/ext पर रख सकते हैं और फिर जब आप ग्रहण में सर्वर-रनटाइम लाइब्रेरी को कॉन्फ़िगर करते हैं तो आपके पास इन जार आपके बिल्ड-पथ में होंगे।

यह link आपको निर्णय लेने में भी मदद कर सकता है, लेकिन यह *-service.jar के लिए बोलता है लेकिन मुझे यकीन नहीं है कि यह किसी एक पोर्टलेट में अन्य जार काम करेगा।

+0

आपके उत्तर के लिए धन्यवाद! क्या इसे तैनात करने के लिए ब्राउज़र इंटरफ़ेस का उपयोग करने का कोई तरीका है? मैं इस समय आमतौर पर उपयोग किए जाने वाले जार को बदल रहा हूं (भारी विकास) ताकि मैन्युअल प्रतिलिपि और पेस्ट और पुनरारंभ करना बहुत ही परेशान होगा ... – strauberry

+0

वैश्विक वर्ग पथ में जा रहे जारों को सर्वर को फिर से लोड करने की आवश्यकता है। मैं आपकी आवश्यकता को प्राप्त करने के किसी अन्य तरीके के बारे में नहीं जानता। यद्यपि ऐसे उपकरण हैं जो सर्वर के पुनरारंभ किए बिना भी जार लोड करने में मदद करते हैं, इसलिए आप इन्हें देखने का प्रयास कर सकते हैं। –

+3

उन्हें टॉमकैट/lib/ext में डालने से लाभ यह है कि तब सभी वेब ऐप्स एक ही कक्षा लोडर द्वारा लोड किए गए समान जार साझा करेंगे। यदि आप वेब अनुप्रयोगों के बीच कक्षाओं के उदाहरण पारित कर रहे हैं (उदाहरण के लिए सत्र के माध्यम से) यदि आप प्रत्येक वेबपैप की अपनी प्रतियां हैं तो आप क्लासकास्ट अपवादों में भाग सकते हैं। Lib/ext का उपयोग करने में दोष यह है कि सर्वर पुनरारंभ करने के लिए जार के नए संस्करणों को तैनात करने के लिए आवश्यक है। –