Question

Nous sommes en train de migrer notre application de notre environnement de production vers un tout nouveau centre de données.

  • Environnement de production actuel: Java 1.4, Java EE 3, WAS 5.1, JSF 2.1
  • Nouvel environnement de centre de données: Java 1.5, Java EE 5, WAS 6.1, JSF 2.1
Notre application est construite sur JSF 2.1 et contient le code ci-dessous dans l'un des appels AJAX:
request.getSession().getServletContext().getRequestDispatcher(
                    "/results.faces").include(request, response);
Et c’est là que nous rencontrons des problèmes.

Cas 1: structure EAR conforme aux spécifications standard
. EAR - > GUERRE - > WEB-INF - > lib - > * .jar (tous les fichiers jar spécifiques à l'application sont sous WEB-INF / lib). Cela ne fonctionne pas et nous voulons obtenir des exceptions pour les classes non trouvées par le chargeur de classes. En outre, l'appel AJAX ci-dessus échoue (pas de sortie générée)

Cas 2: EAR contient tous les fichiers JAR de l’application à la racine (MANIFEST.MF a le chemin de classe spécifié manuellement).
Cette approche fonctionne parfaitement et tous les fichiers JAR sont chargés sans aucun problème. De plus, l’appel AJAX passe également bien.

Toutes les idées pour lesquelles cela pourrait se produire.

- & nbsp; Ashish

Était-ce utile?

La solution

Oui, c'est parce que les serveurs d'applications Java EE ont une hiérarchie de chargeurs de classes qui ressemble à ceci: le chargeur de classes d'amorçage est d'abord appelé; Ensuite, le chargeur de classe de niveau EAR, puis le chargeur de classe de niveau WAR. Les chargeurs de classes de niveau supérieur ne rechercheront pas ci-dessous les classes dont ils ont besoin. S'ils ne trouvent pas ce dont ils ont besoin, une exception ClassNotFoundException sera levée.

Ainsi, les fichiers JAR de WEB-INF / lib n'étaient pas visibles pour le chargeur de classes de niveau EAR. Lorsque vous déplacez ces fichiers JAR, vous résolvez le problème. Il rend également tous ces fichiers JAR visibles pour tous les fichiers WAR de votre fichier EAR.

Vous voudrez peut-être vérifier les spécifications de votre fichier web.xml et d’autres fichiers. Les spécifications de servlet et de JSP ont changé quelque part au cours du processus. Par conséquent, les fichiers JAR tels que JSTL et autres sont passés de la version 1.0 à la version 1.1. Vous voudrez peut-être examiner attentivement votre fichier web.xml et tous les fichiers JAR pour vous assurer qu'ils correspondent aux spécifications prises en charge par votre serveur d'applications Java EE.

Malheureusement, la mise à niveau du serveur d'applications n'est pas aussi simple que d'insérer un fichier EAR ou WAR.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top