2017-02-19 92 views
7

AWS'de Tomcat 8.0.39 altında mükemmel şekilde çalışan bir Spring Boot WAR uygulamasına sahibim. sudo service tomcat8 stop yayınladıktan sonra Tomcat 8.0.41 ile sudo yum update sürümüne yükseltme yapın ve örneği yeniden başlatın, uygulama başlamıyor.Tomcat 8.0.39'dan 8.0.41'e yükseltme 'taranamadı' hatalarıyla sonuçlanıyor

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 

üzerinde herhangi bir öneriniz nasıl bu sorunu gidermek için: Tomcat hakkında şikayet Burada

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) 

dosyalar şunlardır: catalina günlük dosyasında, ben Çeşidi istisnalar bir ton görüyor musunuz?


Güncelleme # 1:

yukarıdaki dosyalardan bazılarıjaxws-ri aittir. Tomcat'ın lib dizinine kopyalanan JAX-WS RI 2.2.10 lib dizinindeki kavanozlardan bazılarının (10) olduğu (10) olduğu ortaya çıktı. Eksik 13 kavanoz kopyaladıktan sonra, Tomcat catalina günlük dosyasında şikayetçi dosyaların listesi küçüldü. tarayıcı gibi günlük dosyasında birkaç kez tekrarlanır yukarıdaki dosyalar için

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 

(İstisnalar görünüyor başlangıçta tekrar tekrar başlatıldı, belki de farklı sınıf yollarını taramak.)

Bu, 8.0.39'dan 8.0.41'e geçişle Tomcat'in, başvurulan tüm kılavuzların varlığı konusunda aniden çok seçici olduğunu söyler. Birçoğu olmadan mükemmel para cezası. Buna ek olarak, Tomcat bazı kavanozların spesifik yapıları hakkında çok özel görünmektedir (örneğin, yukarıdaki jaxb-core... ve jaxb-api... kavanozlarına bakınız).

Şimdi, bunu düzeltmek için tüm bu eksik kavanozları bulup Tomcat'ın lib dizinine kopyalayabilirim. Ancak, config.jar gibi jenerik isimler veya eksik sürüm numaraları nedeniyle bazılarının uygun kaynağını temin etmenin hiçbir yolunu görmüyorum.

Yani, Tomcat'in scan.StandardJarScanner.scan tüm bu kavanozlar hakkında bu kadar seçici olmasını engellemenin bir yolu var mı?


Güncelleme # 2:

Bu Tomcat 8.0.38 yılında, bir ayar kavanoz tarama, true hangi varsayılan değerini kontrol eklendi çıkıyor. kapalı tarayarak bırakmak için context.xml aşağıdaki satırı ekleyin:

Ayrıntılar için
<Context> 
    ... 
    <JarScanner scanManifest="false"/> 
</Context> 

, Provide an option to disable processing of Class-Path entry in a jar's manifest file bakın. Bir hata Tomcat 8 JAR MANIFEST.MF dosyada Class-Path başlığı yok saydığı vardı

+0

Dosyalar mevcut değil. Eğer Tomcat 8.0.41 onları gerektirirse (ve 8.0.39 açıkçası yapmadıysa), o zaman “yum güncelleme” ile gelmelidirler ama görünüşe göre değillerdi. – user1408140

+0

Neyin yüklü olduğunu görmek ve dosyaların gerçekten eksik ve beklenmedik bir yerde olmadığından emin olmak için 'rpm -ql tomcat | more ile başlayın. –

cevap

8

, Bug 59226 bkz:

Bug 59226 - StandardJarScanner tezahür Sınıf yolu başlığındaki kavanozları görmezden

Bu hata, Tomcat 8.0 ile giderildi.34, ama o Bug 59961 bkz gerekli değildir kavanozları için uyarılar bir sürü üretti:

Bug 59961 - Bir küpünün manifest dosyasında Sınıf-Yol girişi işlenmesini devre dışı bırakmak için bir seçenek sağlayın

Tomcat'e yana 8.0.38 Eğer MANIFEST.MF dosyanın taramasını devre dışı bırakabilir, The Jar Scanner Component bkz:

scanManifest

true ise M Bulunan herhangi bir JAR'ın anifest dosyaları, ek sınıf yolu girişleri için taranır ve bu girişler taranacak URL'lere eklenir. Varsayılan değer doğrudur.