2013-07-15 5 views
7

मैं अतीत में टॉमकैट 7 [7.0.4.1] में माइग्रेट कर चुका हूं, एक स्टार्टअप 5 या 7 सेकंड के बीच लेता है अब 30 सेकंड्स मैंने अन्य पोस्ट पर पढ़ा है वेब.एक्सएमएल में मेटाडाटा-पूर्ण = "सत्य" सेट चाल को हल करता है लेकिन मेरे मामले में हल नहीं होता है मैंने metadata-complete="true"WEB-INF/web.xml में और tomcat/conf/web.xml में काम नहीं किया है।टॉमकैट 7 धीमी शुरुआत मेटाडाटा-पूर्ण = "सत्य" वेब.एक्सएमएल

यहाँ यहाँ WEB-INF/web.xml

<web-app metadata-complete="true" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
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"> 

कोड वितरित करने सफलतापूर्वक यहाँ किया जा रहा है का पता लगाने बिल्ला मुद्रण है है के लिए tomcat/conf/web.xml

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
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" 
metadata-complete="true" 
version="3.0"> 

कोड है।

INFO: Starting Servlet Engine: Apache Tomcat/7.0.41 
jul 22, 2013 4:33:08 PM org.apache.catalina.core.ApplicationContext log 
INFO: No Spring WebApplicationInitializer types detected on classpath 
इस वाक्य में

30 सेकंड के ऊपर ले जा रहा है ..

INFO: Starting Servlet Engine: Apache Tomcat/7.0.41 
मेरे सवालों

हैं:

  • क्या मैं गलत कर रहा हूँ ??

  • मैं कैसे देख सकते हैं है मेटाडाटा-पूरा सच करने के लिए सेट कर रहा है मैं दूसरों वेब साइट में पढ़ रहा हूँ इस isMetadataComplete() में झंडा जाँच बनाया जा सकता है लेकिन मेरे सवाल कहाँ है या मैं कैसे इस विधि कॉल कर सकते हैं ??

हम [स्प्रिंग, हाइबरनेट, ZK] बाहर परियोजना में उपयोग कर रहे हैं।

+1

आप सर्वलेट 3.0 का उपयोग नहीं कर रहे हैं, तो (जब से मैं जावा 8 पर बिलाव के एक पुराने संस्करण का उपयोग कर रहा, एनोटेशन प्रसंस्करण पूरी तरह से मेरे लिए, स्टार्टअप पर होने वाले अपवाद के बहुत सारे के साथ टूट गया है), तो 'मेटाडाटा -complete' तत्व मान्य नहीं है। यदि आपका कंटेनर सर्वलेट 3.0 नहीं चला रहा है, तो आप संस्करण को 3.0 पर सेट नहीं कर सकते हैं। आपके पास सर्वलेट 3.0 जार है। –

उत्तर

8

मेटाडेटा-पूर्ण ने मेरे स्टार्टअप समय के मुद्दों को हल नहीं किया। समस्या यह है कि टोमकैट एनोटेशन और टीएलडी फाइलों के लिए स्टार्टअप पर एकाधिक (लगभग सभी जार) स्कैन करता है। बेशक, सभी जारों में टीएलडी फाइलें और एनोटेशन नहीं हैं। अपने स्टार्टअप समय को बेहतर बनाने के लिए आप इन जारों को बाहर कर सकते हैं। निम्नलिखित की तरह कुछ चाल करना चाहिए: conf/catalina.properties समायोजित करें: टिप्पणी

org.apache.catalina.startup.ContextConfig.jarsToSkip=*.jar 

# Additional JARs (over and above the default JARs listed above) to skip when 
# scanning for TLDs. The list must be a comma separated list of JAR file names. 
# The following list will make sure stuff like jstl and spring-webmvc.jar etc which contain tld files are included 
org.apache.catalina.startup.TldConfig.jarsToSkip=a*.jar,b*.jar,c*.jar,d*.jar,e*.jar,f*.jar,g*.jar,h*.jar,i*.jar,jc*.jar, jd*.jar, je*.jar, jl*.jar, jo*.jar, JO*.jar, jr*.jar, jso*.jar, jsr*.jar, jts*.jar,k*.jar,l*.jar,m*.jar,n*.jar,o*.jar,p*.jar,q*.jar,r*.jar,spring-a*.jar, spring-c*.jar, spring-e*.jar, spring-j*.jar, spring-s*.jar, spring-test*.jar, stax*.jar, st*.jar, t*.jar,u*.jar,v*.jar,w*.jar,x*.jar,y*.jar,z*.jar 
+1

प्रश्न से खेद है कि मैं कैसे जान सकता हूं कि कौन से जारों में टीएलडी और एनोटेशन हैं ?? हम वसंत, हाइबरनेट, ehcache और जेडके का उपयोग करें। – chiperortiz

+0

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

+0

टीएलडी फाइलों के लिए स्कैनिंग नया नहीं है। यह शुरुआत के बाद से है। यह एक कारण नहीं होना चाहिए क्योंकि यह टोमकैट के पुराने संस्करणों में तेज़ था। –

1

जो लोग अभी भी मेरी तरह इस मुद्दे का सामना कर सकते के लिए (जबकि 3.2 जावा 8 स्प्रिंग 3.0 और से पलायन), कि यदि आप किसी भी जार का उपयोग करते हैं तो आप इस मुद्दे पर भी भाग लेंगे जिसमें web-fragment.xml (वसंत-वेब की तरह) शामिल है।

इससे बचने के लिए, आप भी एक खाली absolute-ordering में निर्दिष्ट करना चाहिए अपने web.xml (SPRING-10196 के अनुसार और बिलाव के HowTo/FasterStartUp):

<absolute-ordering/> 

(भी सुनिश्चित करें कि आप अपने web.xml में सर्वलेट 3.0 को निर्दिष्ट कर रहे हैं)

इसके अलावा, यदि आप टोमकैट के पुराने संस्करण का उपयोग कर रहे हैं, तो absolute-orderingbug 54262 के कारण काम नहीं करेगा।इसे ठीक करने के एक डमी टुकड़ा नाम का उपयोग करें:

<absolute-ordering> 
    <!-- Due to a bug in Tomcat 7.0.29, an empty absolute-ordering does not prevent the annotation scanning. 
    Adding a dummy fragment name does the trick. 
    see proposed workaround in https://bz.apache.org/bugzilla/show_bug.cgi?id=54262#c0 --> 
    <name>dummy</name> 
</absolute-ordering> 

तो कुछ भी नहीं काम करता है, jarsToSkip समाधान @Prashant द्वारा प्रस्तावित करने पर विचार, लेकिन यह अधिक कष्टप्रद के बाद से यह अपने सभी वातावरण में बिलाव विन्यास को संशोधित करने की आवश्यकता है।

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