Upgrade von Tomcat 8.0.39 zu 8.0.41 Ergebnisse in "failed to scan" - Fehler

Ich habe eine Spring-Boot-KRIEG Anwendung perfekt arbeiten unter Tomcat 8.0.39 auf AWS. Nach Erteilung sudo service tomcat8 stop Upgrade auf Tomcat 8.0.41 durch sudo yum update und Neustart der Instanz wird die Anwendung nicht gestartet. Im catalina log-Datei, sehe ich eine Tonne von Ausnahmen des Typs:

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)

Hier sind die Dateien, die Tomcat beschwert sich über:

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

Irgendwelche Vorschläge, wie man dieses Problem beheben?


Update #1:

Einige der oben genannten Dateien gehören zu jaxws-ri. Es stellte sich heraus, dass ich hatte einige (10), aber nicht alle (23), der die Gläser von JAX-WS RI 2.2.10 lib Verzeichnis kopiert, in der Tomcat lib - Verzeichnis. Nach dem kopieren der fehlenden 13 Gläser, die Liste der Dateien, die Tomcat beschwert sich über den catalina-log-Datei ist geschrumpft auf:

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

(Ausnahmen für die oben genannten Dateien sind mehrfach in der log-Datei. Sieht aus wie der scanner wird mehrfach aufgerufen im Autostart, vielleicht Scannen die verschiedenen Klassen von Pfaden.)

Dieser sagt mir, dass mit dem übergang von 8.0.39 zu 8.0.41, Tomcat wurde plötzlich sehr wählerisch, was die Anwesenheit aller referenzierten jars, obwohl die Anwendung funktioniert perfekt, ohne zu viele von Ihnen. Darüber hinaus Tomcat zu sein scheint sehr insbesondere über bestimmte builds von einigen Gläsern (z.B. siehe die jaxb-core... und jaxb-api... Gläser oben).

Nun, dieses Problem zu beheben, ich könnte versuchen, alle diese fehlenden Gläser, und kopieren Sie Sie auf Tomcat lib - Verzeichnis. Allerdings sehe ich keine Möglichkeit zu versichern, die richtige Quelle für einige von Ihnen durch generische Namen, wie config.jar oder fehlende Versionsnummern.

So, gibt es eine Möglichkeit zu verhindern, dass der Tomcat scan.StandardJarScanner.scan nicht so pingelig über alle diese Gläser?


Update #2:

Es stellt sich heraus, dass in Tomcat 8.0.38, eine Einstellung wurde Hinzugefügt, um zu Steuern jar Scannen, wird der Wert standardmäßig true. Zu turn scanning off, fügen Sie die folgende Zeile in context.xml:

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

Für details, siehe
Eine option zum deaktivieren der Verarbeitung von Class-Path-Eintrag in eine jar-manifest-Datei.

  • Die Dateien gibt es nicht. Wenn Tomcat 8.0.41 verlangt, dass Sie (und 8.0.39 offensichtlich nicht), dann sollten Sie kommen mit den yum update aber anscheinend Sie nicht.
  • So starten Sie mit rpm -ql tomcat|more um zu sehen, was installiert wurde und stellen Sie sicher, dass die Dateien tatsächlich fehlen und nicht irgendwo unerwartet.
InformationsquelleAutor user1408140 | 2017-02-19
Schreibe einen Kommentar