La mise à niveau de Tomcat 8.0.39 à 8.0.41 des résultats en "échec de scan' erreurs
J'ai un Ressort de Démarrage de la GUERRE application fonctionnant parfaitement sous Tomcat 8.0.39 sur AWS. Après l'émission de sudo service tomcat8 stop
, la mise à niveau vers Tomcat 8.0.41 par sudo yum update
, et le redémarrage de l'instance, l'application ne démarre pas. Dans le catalina fichier de log, je vois une tonne d'exceptions de type:
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)
Voici les fichiers Tomcat se plaint:
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
Des suggestions sur la façon de résoudre ce problème?
Mise à jour #1:
Certains des fichiers ci-dessus appartiennent à jaxws-ri
. Il s'est avéré que j'ai eu quelques (10), mais pas tous (23), des pots de JAX-WS RI 2.2.10 lib
répertoire copié dans Tomcat lib
répertoire. Après avoir copié le manque 13 pots, la liste des fichiers Tomcat se plaint dans le catalina fichier journal a été réduit à:
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
(Exceptions pour les fichiers ci-dessus sont répétées plusieurs fois dans le fichier journal. Ressemble le scanner est appelée à plusieurs reprises au démarrage, peut-être la numérisation des cours différents chemins.)
Cela me dit que, avec le passage de 8.0.39 à 8.0.41, Tomcat est soudainement devenu très pointilleux sur la présence de toutes référencées pots, même si l'application fonctionne parfaitement bien sans beaucoup d'entre eux. En outre, Tomcat semble être très particulier sur des constructions particulières de certains pots (voir, par exemple, la jaxb-core...
et jaxb-api...
bocaux ci-dessus).
Maintenant, pour résoudre ce que je pourrais essayer de trouver tous ces disparus pots et les copier sur un Tomcat lib
répertoire. Cependant, je ne vois aucune façon de s'assurer de la bonne source pour certains d'entre eux en raison de noms génériques, tels que config.jar
, ou par l'absence de numéros de version.
Donc, est-il un moyen pour éviter de Tomcat scan.StandardJarScanner.scan
d'être si pointilleux sur tous ces pots?
Mise à jour #2:
Il s'avère que dans Tomcat 8.0.38, un paramètre a été ajouté pour contrôler le pot de balayage, dont la valeur par défaut est true
. Pour activer le balayage off, ajoutez la ligne suivante dans context.xml
:
<Context>
...
<JarScanner scanManifest="false"/>
</Context>
Pour plus de détails, voir
Fournir une option pour désactiver le traitement de Chemin de Classe d'entrée dans un bocal le fichier de manifeste.
yum update
mais apparemment ils n'ont pas.Donc, commencer avec
rpm -ql tomcat|more
pour voir ce qui a été installé et assurez-vous que les fichiers sont manquant et pas dans des endroits inattendus.OriginalL'auteur user1408140 | 2017-02-19
Vous devez vous connecter pour publier un commentaire.
Il y avait un bug, que Tomcat 8 ignore la
Class-Path
d'en-tête dans leMANIFESTE.MF
fichier d'un BOCAL, voir Bug 59226:Ce bug a été corrigé avec Tomcat 8.0.34, mais il produit beaucoup de mises en garde pour ne pas exigé des Pots, voir Bug 59961:
Depuis Tomcat 8.0.38 vous pouvez désactiver l'analyse de la
MANIFEST.MF
fichier, voir Le Pot Scanner Composant:OriginalL'auteur dur