Notes de version Sun Java System Application Server Platform Edition 8.2

Conteneur Web

Cette section décrit les problèmes connus liés au conteneur Web et les solutions associées.

Le déploiement d'une application utilisant --precompilejsp=true peut verrouiller des fichiers JAR de l'application, entraînant ainsi l'échec d'une future annulation du déploiement ou d'un futur redéploiement (Windows uniquement). (ID 5004315)

Si vous devez effectuer une précompilation des pages JSP lors du déploiement d’une application sous Windows, les tentatives ultérieures de redéploiement ou d’annulation de déploiement de cette application (ou de toute autre application contenant le même ID de module) ne fonctionneront pas comme prévu. L’origine de ce problème provient du fait que la précompilation des pages JSP ouvre les fichiers JAR dans votre application, mais ne les referme pas. Windows empêche alors que le processus d’annulation du déploiement ne supprime ces fichiers ou que le processus de redéploiement ne les écrase.

Il est à noter que l’annulation du déploiement réussit partiellement dans la mesure où l’application est supprimée d’Application Server. Notez aussi qu'aucun message d'erreur n'est retourné par l'utilitaireasadmin, mais que le répertoire application\qs et les fichiers jar verrouillés ne sont pas supprimés du serveur. Le fichier journal server\qs contient les messages décrivant l'échec de la suppression des fichiers et du répertoire application\qs.

Toute tentative de redéploiement de l’application suite à l’annulation du déploiement échoue, car le serveur essaie en vain de supprimer le répertoire et les fichiers existants. Cela peut se produire si vous essayez de déployer une application qui utilise le même ID de module que celui de l’application initialement déployée. En effet, le serveur utilise cet ID de module lors de la sélection d’un répertoire destiné à contenir les fichiers application\qs.

Les tentatives de redéploiement de l’application sans annulation préalable du déploiement échouent pour les mêmes raisons.

Diagnostics

Si vous essayez de redéployer l’application ou de la déployer après avoir annulé son déploiement, l’utilitaire asadmin renvoie une erreur similaire à l'erreur ci-dessous.

An exception occurred while running the command.  The exception message 
is: CLI171 Command deploy failed : Deploying application in domain failed;
Cannot deploy. Module directory is locked and can\qt be deleted

Solutions

Ce problème ne surviendra pas si vous spécifiez --precompilejsps=false (valeur par défaut) lorsque vous déployez une application. Sachez que, lors de sa première utilisation, l’application déclenche la compilation des pages JSP. C'est pourquoi le temps de réponse de la première requête est supérieur à celui des requêtes suivantes.

Notez également qu’en cas de précompilation, vous devez arrêter et redémarrer le serveur avant d’annuler le déploiement de l’application ou de redéployer cette dernière. L’arrêt du serveur permet de libérer les fichiers JAR qui étaient verrouillés et d’effectuer correctement les opérations d’annulation du déploiement ou de redéploiement de l’application après le redémarrage.

Impossible de déployer WAR avec web.xml basé sur Servlet 2.4 contenant un élément <load-on-startup\> vide. (ID 6172006)

L’élément facultatif load-on-startup inclus dans le fichier web.xml indique que le servlet correspondant doit être chargé et initialisé au démarrage de l’application Web à laquelle il appartient.

Le contenu facultatif de cet élément est un nombre entier précisant en quelle position le servlet doit être chargé et initialisé par rapport aux autres servlets application\qs Web. Lorsque l'élément load-on-startup> est vide, l'ordre de démarrage du servlet est inutile tant que celui-ci est chargé et initialisé au cours du démarrage de l'application Web dont il dépend.

Le schéma Servlet 2.4 du fichier web.xml ne prend plus en charge les éléments <load-on-startup> vides, ce qui signifie que vous devez obligatoirement indiquer un nombre entier lorsque vous utilisez un fichier web.xml basé sur le composant Servlet 2.4. Si vous laissez l’élément <load-on-startup> vide, tel que <load-on-startup/>, le fichier web.xml ne parvient pas à valider le schéma Servlet 2.4, provoquant l’échec du déploiement de l’application Web.

Problème de compatibilité ascendante: Vous pouvez néanmoins laisser l'élément <load-on-startup> vide pour un fichier web.xml basé sur le composant Servlet 2.3.

Solution

Définissez la valeur <load-on-startup>0</load-on-startup> lors de l’utilisation d’un fichier web.xml basé sur Servlet 2.4 afin d’indiquer que l’ordre de chargement du servlet n’est pas important.

Impossible de compiler la page JSP sur des serveurs limités en ressources. (ID 6184122)

La page JSP est accessible mais ne peut pas être compilée. Le journal du serveur contient le message d’erreur "Unable to execute command" avec le suivi de pile suivant :

at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.exec
(Execute.java:655) at org.apache.tools.ant.taskdefs.Execute.launch
(Execute.java:416) at org.apache.tools.ant.taskdefs.Execute.execute
(Execute.java:427) at org.apache.tools.ant.taskdefs.compilers.
DefaultCompilerAdapter.executeExternalCompile(DefaultCompilerAdapter.
java:448) at org.apache.tools.ant.taskdefs.compilers.JavacExternal.
execute(JavacExternal.java:81) at org.apache.tools.ant.taskdefs.Javac.
compile(Javac.java:842) at org.apache.tools.ant.taskdefs.Javac.execute
(Javac.java:682) at org.apache.jasper.compiler.Compiler.generateClass
(Compiler.java:396)

Solution

Définissez le commutateur de compilation JSP fork sur false.

Vous pouvez effectuer cette opération de l'une des deux manières suivantes:

Détérioration des performances sur des ordinateurs multi-CPU. (ID 6194026)

La configuration par défaut d'Application Server PE n'est pas optimale sur des ordinateurs multi-CPU. Un compromis est appliqué pour que le démarrage soit plus rapide, mais ceci peut affecter les performances d'applications Web.

Solution

Configurez Application Server de façon à définir la propriété JVM suivante :

-Dcom.sun.enterprise.server.ss.ASQuickStartup=false

Des documents Fast Infoset malformés reçus peuvent désactiver la prise en charge de Fast Infoset pour des services déployés JAX-RPC. (ID 6368670)

Si un message SOAP codé en Fast Infoset non conforme est envoyé à un service JAX-RPC, le service sera alors à juste titre défaillant en réponse. Cependant, d'autres messages SOAP codés en Fast Infoset conformes envoyés au même service ou à un service déployé avec le même temps d'exécution JAX-RPC peuvent être défaillants de manière inappropriée.

Solution

Les solutions suivantes sont possibles :