Conseils de traitement des incidents liés à JavaServer Pages
Ces conseils permettent de résoudre des incidents liés à JavaServer Pages.
Code source JavaServer Pages affiché par le serveur Web
Si vous partagez le répertoire principal des documents WebSphere Application Server avec le répertoire principal des documents du serveur Web, les règles de sécurité risquent d'être enfreintes car le serveur Web peut afficher le fichier source JavaServer Pages (JSP) sous forme de texte normal.
- Incident
- Vous pouvez utiliser le groupe de règles disponible dans le plug-in du serveur Web WebSpherepour déterminer si une requête donnée doit être traitée par le système WebSphere Application Server. Lorsqu'une requête entrante ne correspond pas aux règles indiquées, le plug-in du serveur Web fait appel au serveur Web afin que celui-ci traite la requête. Dans ce cas de figure, l'en-tête de l'hôte inconnu oblige le plug-in à faire appel au serveur Web car les règles n'indiquent pas que le système WebSphere Application Server doit traiter ce type d'en-tête. Le serveur Web recherche la requête dans le répertoire principal des documents du serveur Web. Comme le fichier source JSP est stocké dans le répertoire principal des documents du serveur Web, celui-ci identifie l'emplacement du fichier et l'affiche au format texte normal.
- Solution proposée
- Placez le fichier source JSP deWebSphere Application Server hors du répertoire principal des documents sur le serveur Web. Lorsque cette requête est transmise avec l'en-tête d'un hôte inconnu, le plug-in fait appel au serveur Web et le fichier source JSP n'est plus disponible dans le répertoire principal des documents. Le serveur Web renvoie une erreur 404 File Not Found à la place du fichier source JSP.
Incidents lors de l'affichage de caractères issus du jeu de caractère à deux octets (DBCS) lors de l'utilisation de la directive @include
Les fichiers JavaServer Pages qui utilisent la directive @include peuvent rencontrer des problèmes lors de l'affichage de caractères du jeu de caractères à deux octets (DBCS). Certaines applications migrées sur WebSphere Application Server version 6.0 et ultérieure doivent être modifiées pour être conformes à la spécification JSP 2.0 en vue d'assurer la rétrocompatibilité. La spécification JSP 2.0 nécessite que chaque ressource incluse de manière statique doit définir un encodage de page ou un type de contenu car l'encodage des caractères de chaque fichier est déterminé séparément, même si un fichier en inclut un autre à l'aide de la directive d'inclusion.
Problèmes lors de l'utilisation du moteur JavaServer Pages (JSP)
- Déterminez si d'autres ressources, telles que des fichiers .html ou des servlets sont requises et affichées correctement. Si elles ne le sont pas, l'incident se situe probablement à un niveau plus profond, tel que celui du serveur HTTP.
- Si les autres ressources s'affichent correctement, déterminez comme suit si le processeur JSP a démarré normalement :
Parcourez les journaux JVM du serveur qui héberge les fichiers JSP auxquels vous tentez d'accéder. Les messages suivants indiquent que le processeur a démarré normalement :
Si le chargement du processeur JSP échoue, un message similaire s'affiche:Le processeur d'extension [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] a été initialisé avec succès. Le processeur d'extension [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] a été associé aux motifs [*.jsp *.jspx *.jsw *.jsv ].
dans le fichier rép_racine/logs/nom_serveur/SystemOut.logAucun processeur d'extension ne prend en charge les JSP. Processeur JSP non défini. nomfichierjsp non traité.
Parcourez les journaux du serveur qui héberge les fichiers JSP auxquels vous tentez d'accéder. Les messages suivants indiquent que le processeur a démarré normalement :
Si le chargement du processeur JSP échoue, un message similaire s'affiche:Le processeur d'extension [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] a été initialisé avec succès. Le processeur d'extension [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] a été associé aux motifs [*.jsp *.jspx *.jsw *.jsv ].
dans les fichiers journaux du serveur.Aucun processeur d'extension ne prend en charge les JSP. Processeur JSP non défini. nomfichierjsp non traité.
- Si le moteur JSP a démarré normalement, l'incident se situe peut-être au
niveau du fichier JSP lui-même.
Il se peut que le JSP comporte des instructions erronées et ne soit donc pas pris en charge par le processeur JSP. Examinez le fichier rép_racine/logs/nom_serveur/SystemOut.log de l'application cible à la recherche de messages relatifs à des erreurs de syntaxe dans la directive JSP. Le navigateur signale des erreurs de ce type de la façon suivante :
Cet exemple signale qu'un attribut obligatoire de l'action jsp:include est manquant en ligne 2, colonne 1 du fichier JSP nommé. Des messages identiques s'affichent pour les autres erreurs de syntaxe.Message : /nomfichier.jsp(2,1)JSPG0076E : Page d'attribut requis manquante pour JSP element jsp:include
Il se peut que le JSP comporte des instructions erronées et ne soit donc pas pris en charge par le processeur JSP. Examinez les fichiers journaux du serveur de l'application cible à la recherche de messages relatifs à des erreurs de syntaxe dans la directive JSP. Le navigateur signale des erreurs de ce type de la façon suivante :
Cet exemple signale qu'un attribut obligatoire de l'action jsp:include est manquant en ligne 2, colonne 1 du fichier JSP nommé. Des messages identiques s'affichent pour les autres erreurs de syntaxe.Message : /nomfichier.jsp(2,1)JSPG0076E : Page d'attribut requis manquante pour JSP element jsp:include
- Vérifiez si la syntaxe
Java™ des fichiers
SystemErr.log du serveur d'applications cible est valide.
Ce type d'erreur est signalé par un message
similaire à Message : Impossible de compiler la classe pour JSP affiché
dans un navigateur. Le message d'erreur en sortie du compilateur Java est enregistré dans le fichier SystemErr.log. Il peut se présenter ainsi :
JSPG0091E : Une erreur s'est produite à la ligne 2 du fichier /monJsp.jsp JSPG0093E: Generated servlet error: c:\WASROOT\temp\ ... test.war\_myJsp.java:16: myInt is already defined in com.ibm.ws.jsp20._myJsp int myInt = 122; String myString = "numéro 122"; static int myStaticInt=22; int myInt=121; ^ 1 error
Rectifiez l'erreur dans le fichier JSP et essayez de nouveau le fichier.
- Vérifiez si la syntaxe Java des fichiers journaux de l'application cible est valide. Ce type d'erreur est signalé par un message
similaire à Message : Impossible de compiler la classe pour JSP affiché
dans un navigateur.
Le message d'erreur en sortie du compilateur Java est enregistré dans le fichier SystemErr.log. Il peut se présenter ainsi :
JSPG0091E : Une erreur s'est produite à la ligne 2 du fichier /monJsp.jsp JSPG0093E: Generated servlet error: c:\WASROOT\temp\ ... test.war\_myJsp.java:16: myInt is already defined in com.ibm.ws.jsp20._myJsp int myInt = 122; String myString = "numéro 122"; static int myStaticInt=22; int myInt=121; ^ 1 error
Le message d'erreur en sortie du compilateur Java est enregistré dans les fichiers journaux du serveur. Il peut se présenter ainsi :
JSPG0091E : Une erreur s'est produite à la ligne 2 du fichier /monJsp.jsp JSPG0093E: Generated servlet error: c:\WASROOT\temp\ ... test.war\_myJsp.java:16: myInt is already defined in com.ibm.ws.jsp20._myJsp int myInt = 122; String myString = "numéro 122"; static int myStaticInt=22; int myInt=121; ^ 1 error
Rectifiez l'erreur dans le fichier JSP et essayez de nouveau le fichier.
JavaServer Pages ne peut pas compiler lors de l'utilisation de la précompilation
Symptôme | Incident | Solution proposée |
---|---|---|
JavaServer Pages ne peut pas compiler lors du déploiement via la console d'administration lorsque la précompilation est sélectionnée.
|
JavaServer Pages ne peut pas compiler lors du déploiement via la console d'administration lorsque la précompilation est sélectionnée, alors qu'une dépendance d'un autre fichier JAR Java n'est disponible dans aucun chemin d'accès de classes. | Vous pouvez utiliser des scripts wsadmin pour précompiler les fichiers JSP pendant le déploiement d'application d'entreprise. Mais si vous souhaitez utiliser la console d'administration, compilez alors tous les fichiers JSP avant de regrouper l'application.
|
JSPG0089E : Discordance détectée entre l'encodage Shift_JIS de la directive de page et l'encodage UTF-8 prolog xml
Symptôme | Incident | Solution proposée |
---|---|---|
L'erreur suivante apparaît :
|
L'attribut pageEncoding de l'élément jsp:directive.page n'est pas au format UTF-8. | Le fichier JavaServer Pages doit spécifier un prolog qui correspond à l'encodage indiqué dans la directive de la page. Par exemple, avec
Pour obtenir plus d'informations, voir la section JSP.4.1, Page Character Encoding, de la spécification JavaServer Pages et la section 4.3.3 et annexe F.1 de la spécification XML (Extensible Markup Language) |
Lorsqu'aucune de ces opérations ne résout l'incident, vérifiez s'il a été identifié et documenté en utilisant les liens de la rubrique Diagnostics et résolution des incidents : Ressources d'apprentissage. Si vous ne trouvez pas d'incident similaire au vôtre, ou que les informations fournies ne permettent pas de le résoudre, prenez contact avec le support technique IBM.
Pour obtenir les informations récentes sur les incidents recensés et leur traitement disponibles auprès du support IBM, accédez à la page de support IBM. La page IBM Support contient des documents permettant de collecter plus rapidement les informations requises pour résoudre cet incident.