हम हाल ही में सर्वलेट एपीआई 3.0 में माइग्रेट किए गए हैं। चूंकि हम एक ढांचा विकसित कर रहे हैं जिसे कभी-कभी web.xml
में कुछ बदलावों की आवश्यकता होती है, इसलिए हमारे ढांचे पर आधारित परियोजनाओं को फ्रेमवर्क में बदलाव होने पर web.xml
को अपडेट करने की आवश्यकता होती है।एक विशाल परियोजना वातावरण में वेब टुकड़े (सर्वलेट एपीआई 3.0) का उपयोग करें
सर्वलेट एपीआई 3.0 नए वेब फ्रैगमेंट्स प्रस्तुत करता है, जो इस व्यवहार को अधिक कमजोर और गतिशील बनाता है। मैं web-fragment.xml
बनाता हूं और वहां हमारे सभी सामान को web.xml से ले जाता हूं। इसलिए परियोजनाओं को अब निम्नलिखित web.xml
और उनकी अपनी अतिरिक्त घोषणाओं को परिभाषित करना है।
<?xml version="1.0" encoding="UTF-8"?>
<web-app
version="3.0"
metadata-complete="false"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
</web-app>
हम अपने ढांचे META-INF/
में web-fragment.xml
है जार में टुकड़ा खोज सक्षम करने के लिए metadata-complete="false"
उपयोग करने के लिए (है।
जब से हम अन्य चौखटे और पुस्तकालयों (लगभग 80-90) और के लिए कई निर्भरता है metadata-complete="false"
भी एनोटेशन के लिए खोज यह सभी पुस्तकालयों के माध्यम से खोज करने के लिए अस्वीकार्य 12 सेकंड का समय लगता है चलाता है।
तंत्र के रूप में यह है अच्छा काम करता है और मैं तथ्य यह है कि हम और अधिक decou हैं चाहते हमारे ढांचे से चढ़ाया, लेकिन स्टार्टअप समय घातक है! इसके अलावा हमें -Xms256m -Xmx512m
से -Xms512m -Xmx1024m
पर टोमकैट के लिए उपलब्ध स्मृति को java.lang.OutOfMemoryError: Java heap space
(बिना टोमकैट के अक्षम रूप से लागू एनोटेशन प्रोसेसर के कारण शुरू किया गया है) के बारे में टोमकैट के लिए उपलब्ध स्मृति को बढ़ाना होगा (लगभग 50,000 वर्ग कैश किए गए हैं))।
मुझे पता है कि हम एक पुस्तकालय के भीतर एनोटेशन खोज निष्क्रिय कर सकते हैं, लेकिन जैसा कि हम ज्यादातर तीसरे पक्ष के जो metadata-complete="true"
झंडा नहीं है का उपयोग करें, यह भी एक विकल्प नहीं है।
क्या हम एनोटेशन के लिए खोज को अक्षम करने के लिए कुछ भी कर सकते हैं? या क्या हम सर्वलेट कंटेनर को केवल web-fragment.xml
के लिए घोषित पुस्तकालयों में खोज सकते हैं?
मैं वास्तव में नई वेब खंड सुविधा का उपयोग करना चाहूंगा, लेकिन स्टार्टअप समय और मेमोरी के साथ यह संभव नहीं है।
यह वास्तव में एक समाधान है, धन्यवाद! दुर्भाग्य से यह एक सर्वलेट कंटेनर निर्भर समाधान होगा। हम प्रत्येक सर्वलेट कंटेनर पर चलने का लक्ष्य रखते हैं, इसलिए यह समाधान हमारे लिए एक अच्छा विकल्प नहीं है। – codevour
@codevour इस दौरान आपने अपनी समस्या का समाधान कैसे किया है? – phant0m