2017-02-19 11 views
7

मेरे पास एक स्प्रिंग बूट वॉर एप्लिकेशन है जो पूरी तरह से एडब्ल्यूएस पर टॉमकैट 8.0.3 9 के तहत काम कर रहा है। sudo service tomcat8 stop जारी करने के बाद, टॉमकैट 8.0.41 से sudo yum update तक अपग्रेड करने और इंस्टेंस को रीबूट करने के बाद, एप्लिकेशन प्रारंभ नहीं होता है। Catalina लॉग फ़ाइल में, मैं प्रकार के अपवाद की एक टन देखें:टॉमकैट 8.0.3 9 से 8.0.41 तक अपग्रेड परिणाम 'स्कैन करने में विफल' त्रुटियों में

javax.annotation-api.jar 
jsr181-api.jar 
jaxb-api.jar 
javax.xml.soap-api.jar 
FastInfoset.jar 
mimepull.jar 
saaj-impl.jar 
stax2-api.jar 
woodstox-core-asl.jar 
jaxb-core-2.2.10-b140802.1033.jar 
jaxb-api-2.2.12-b140109.1041.jar 
istack-commons-runtime-2.19.jar 
txw2-2.2.10-b140802.1033.jar 
hk2-core.jar 
class-model.jar 
config.jar 
auto-depends.jar 
javax.inject.jar 
hk2-api.jar 
osgi-resource-locator.jar 
tiger-types.jar 
bean-validator.jar 
jtype.jar 

पर कोई सुझाव कैसे इसे ठीक करने के:

19-Feb-2017 10:27:15.326 WARNING [localhost-startStop-1] org.apache.tomcat.util. 
scan.StandardJarScanner.scan Failed to scan [file:/usr/share/java/tomcat8/javax. 
annotation-api.jar] from classloader hierarchy 
java.io.FileNotFoundException: /usr/share/java/tomcat8/javax.annotation-api.jar 
(No such file or directory) 

यहाँ फ़ाइलें हैं बिलाव के बारे में शिकायत?


# अद्यतन 1:

ऊपर फ़ाइलों में से कुछ jaxws-ri के हैं। यह पता चला कि मेरे पास कुछ (10) था, लेकिन सभी (23), जेएक्स-डब्ल्यूएस आरआई 2.2.10 lib निर्देशिका के जारों की टोमकैट की lib निर्देशिका में कॉपी की गई थी। लापता 13 जार कॉपी करने के बाद, फ़ाइलों की सूची बिलाव Catalina लॉग फ़ाइल में के बारे में शिकायत करने के लिए सिकुड़ गई है:। ऊपर फ़ाइलों के लिए

jaxb-core-2.2.10-b140802.1033.jar 
jaxb-api-2.2.12-b140109.1041.jar 
istack-commons-runtime-2.19.jar 
txw2-2.2.10-b140802.1033.jar 
hk2-core.jar 
class-model.jar 
config.jar 
auto-depends.jar 
javax.inject.jar 
hk2-api.jar 
osgi-resource-locator.jar 
tiger-types.jar 
bean-validator.jar 
jtype.jar 

(अपवाद लॉग फ़ाइल में कई बार दोहराया जाता है ऐसा लगता है कि स्कैनर है स्टार्टअप पर बार-बार आह्वान किया गया, शायद विभिन्न वर्ग पथ स्कैनिंग।)

यह मुझे बताता है कि 8.0.3 9 से 8.0.41 तक संक्रमण के साथ, टॉमकैट अचानक सभी संदर्भित जारों की उपस्थिति के बारे में बहुत पसंद आया, भले ही एप्लिकेशन काम करता है उनमें से कई के बिना बिल्कुल ठीक है। इसके अलावा, टॉमकैट कुछ जार के विशिष्ट निर्माण के बारे में बहुत खास प्रतीत होता है (उदाहरण के लिए ऊपर jaxb-core... और jaxb-api... जार देखें)।

अब, इसे ठीक करने के लिए मैं इन सभी लापता जारों को ढूंढने की कोशिश कर सकता हूं और उन्हें टॉमकैट की lib निर्देशिका में कॉपी कर सकता हूं। हालांकि, मुझे सामान्य नामों, जैसे कि config.jar, या अनुपलब्ध संस्करण संख्याओं के कारण उनमें से कुछ के लिए उचित स्रोत को आश्वस्त करने का कोई तरीका नहीं दिखता है।

तो, क्या इन सभी जारों के बारे में इतना चुनौतीपूर्ण होने से टॉमकैट के scan.StandardJarScanner.scan को रोकने का कोई तरीका है?


अद्यतन # 2:

ऐसा लगता है कि बिलाव 8.0.38 में, एक सेटिंग जार स्कैनिंग, true को जो चूक का मूल्य नियंत्रित करने के लिए जोड़ा गया है। बंद स्कैनिंग करने के लिए, context.xml में निम्नलिखित पंक्ति जोड़ें:

<Context> 
    ... 
    <JarScanner scanManifest="false"/> 
</Context> 

जानकारी के लिए, Provide an option to disable processing of Class-Path entry in a jar's manifest file देखते हैं।

+0

फ़ाइलें मौजूद नहीं हैं। यदि टोमकैट 8.0.41 को उनकी आवश्यकता है (और 8.0.3 9 स्पष्ट रूप से नहीं किया गया है), तो उन्हें 'यम अपडेट' के साथ आना चाहिए, लेकिन स्पष्ट रूप से उन्होंने नहीं किया। – user1408140

+0

तो स्थापित करने के लिए 'rpm -ql tomcat | more' के साथ शुरू करें और यह सुनिश्चित करें कि फ़ाइलें वास्तव में गायब हैं और कहीं अप्रत्याशित नहीं हैं। –

उत्तर

8

एक बग था, कि बिलाव 8 पर ध्यान नहीं देता एक जार की MANIFEST.MF फ़ाइल में Class-Path हैडर, Bug 59226 देखें:

बग 59226 - StandardJarScanner पर ध्यान नहीं देता प्रकट कक्षा-पथ शीर्षक में जार

यह बग टॉमकैट 8.0 के साथ तय किया गया था।34, लेकिन यह आवश्यक नहीं जार के लिए चेतावनी का एक बहुत का उत्पादन किया, Bug 59961 देखें:

बग 59,961 - एक जार की मालसूची फ़ाइल में कक्षा-पथ प्रविष्टि के प्रसंस्करण निष्क्रिय करने के लिए एक विकल्प प्रदान करें

बिलाव के बाद से 8.0.38 आप MANIFEST.MF फ़ाइल का स्कैन निष्क्रिय कर सकते हैं, The Jar Scanner Component देखें:

scanManifest

अगर सही है तो एम पाए गए किसी भी जेएआर की एनीफेट फाइलों को अतिरिक्त कक्षा पथ के लिए स्कैन किया जाएगा और उन प्रविष्टियों को स्कैन करने के लिए यूआरएल में जोड़ा जाएगा। डिफ़ॉल्ट सच है।

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