Cette section traite des problèmes connus liés à l'administration et les solutions associées.
Dans certains cas, les fichiers installés sur le DAS devant être synchronisés avec une instance spécifique sont en fait envoyés à d'autres instances.
Aucune solution connue.
La commande asadmin start-cluster indique trop de messages même en cas de défaillance de composants non essentiels au démarrage. Consultez l'exemple suivant de sortie de commandes en cas de défaillance d'éléments non essentiels (par rapport aux instances du cluster) :
./asadmin start-cluster --port 9898 cluster1 Please enter the admin user name>admin Please enter the admin password> The clustered instance, instance2, was successfully started. error 0 [#|2008-07-17T14:58:16.496+0200|WARNING|sun-appserver9.1|javax.jms| _ThreadID=10;_ThreadName=main; _RequestID=90bbbe3a-d654-4480-b295-7e317d945a4a;|[C4003]: Error occurred on connection creation [localhost:37676]. - cause: java.net.ConnectException: Connection refused|#] error 1 [#|2008-07-17T14:58:17.517+0200|WARNING|sun-appserver9.1|javax.jms| _ThreadID=10;_ThreadName=main; _RequestID=90bbbe3a-d654-4480-b295-7e317d945a4a;|[C4003]: Error occurred on connection creation [localhost:37676]. - cause: java.net.ConnectException: Connection refused|#] error 2 [#|2008-07-17T14:58:30.596+0200|WARNING|sun-appserver9.1| javax.enterprise.system.container.ejb| _ThreadID=13;_ThreadName=pool-1-thread-4;TimerBean; _RequestID=5954a044-df06-4a3e-902a-0c40b4b6cddb; |EJB5108:Unable to initialize EJB Timer Service. The likely cause is the database has not been started or the timer database table has not been created.|#] error 3 [#|2008-07-17T14:58:32.512+0200|WARNING|sun-appserver9.1| javax.enterprise.resource.resourceadapter|_ThreadID=10;_ThreadName=main; __CallFlowPool;_RequestID=90bbbe3a-d654-4480-b295-7e317d945a4a;| RAR5005:Error in accessing XA resource with JNDI name [__CallFlowPool] for recovery|#] The clustered instance, instance1, was successfully started. error 0 [#|2008-07-17T14:58:21.117+0200|WARNING|sun-appserver9.1| javax.enterprise.system.container.ejb| _ThreadID=13;_ThreadName=pool-1-thread-4;TimerBean; _RequestID=30827d9a-72ac-4854-b216-06494b6a9fb5; |EJB5108:Unable to initialize EJB Timer Service. The likely cause is the database has not been started or the timer database table has not been created.|#] error 1 [#|2008-07-17T14:58:23.106+0200|WARNING|sun-appserver9.1| javax.enterprise.resource.resourceadapter| _ThreadID=10;_ThreadName=main;__CallFlowPool; _RequestID=b41d76fa-0203-49f7-a2ae-83bf242d3e7a; |RAR5005:Error in accessing XA resource with JNDI name [__CallFlowPool] for recovery|#] Command start-cluster executed successfully. |
Aucune solution connue. Ces messages (exceptions) peuvent être ignorés.
Déploiement d'un adaptateur RA générique contre les défaillances produit d'IBM Message Queue. Les autorisations accordées dans le fichier server.policy sont les suivantes.
grant { permission java.util.logging.LoggingPermission "control"; permission java.util.PropertyPermission "*", "read,write"; } |
Modifiez les autorisations du fichier server.policy comme suit :
grant codeBase "file:${com.sun.aas.installRoot}/lib/install/applications/adminapp/-" { permission java.util.logging.LoggingPermission "control"; }; |
Par défaut, as-install/lib/package-appclient.xml comporte une valeur codée en dur pour la variable AS_ACC_CONFIG de domain1, pointée par asenv.conf. Si domain1 est supprimé et qu'un autre domaine est créé, la variable AS_ACC_CONFIG n'est pas mise à jour avec le nouveau nom de domaine, ce qui provoque l'échec du script package-appclient .
Effectuez l'une des opérations suivantes :
Laissez domain1 intact et créez vos propres domaines en tenant compte de celui-ci.
Supprimez domain1 et remplacez la valeur codée en dur de domain1 dans as-install/lib/package-appclient.xml par le nouveau nom de domaine.
Cette procédure devra être effectuée à chaque création d'un nouveau domaine si domain1 n'est pas présent.
J2SE 1.4.x, 5.0, ou une version ultérieure peut être configurée sur le serveur. La fonction de démarrage d'un agent JMX est intégrée à la plate-forme J2SE 5.0. Un agent est activé lorsque vous définissez explicitement les propriétés système lors du démarrage du serveur.
Voici quelques exemples de valeurs:
name="com.sun.management.jmxremote" value="true" name="com.sun.management.jmxremote.port" value="9999" name="com.sun.management.jmxremote.authenticate" value="false" name="com.sun.management.jmxremote.ssl" value="false" |
Une fois les propriétés JMX configurées et le serveur démarré, un nouveau serveur jmx-connector est démarré dans la machine virtuelle. L'un des effets secondaires non désirés de cette opération est que celle-ci nuit aux fonctions d'administration ; la console d'administration et l'interface de ligne de commande peuvent alors produire des résultats inattendus. Le problème provient du fait qu'il existe des conflits entre le serveur jmx connector intégré et le nouveau serveur jmx-connector.
Si vous utilisez la console jconsole (ou tout autre client compatible JMX), vous pouvez réutiliser le serveur JMX Connector Server lancé au démarrage du serveur.
Lorsque le serveur démarre, une ligne similaire à celle indiquée ci-dessous s'affiche dans le journal du serveur. Vous pouvez vous connecter à l'URL JMXService spécifié et exécutez les mêmes opérations de configuration/gestion après avoir fourni des données d'authentification correctes ; par exemple :
[#|2004-11-24T17:49:08.203-0800|INFO|sun-appserver-ee8.1| javax.enterprise.system.tools.admin|_ThreadID=10;|ADM1501: Here is the JMXServiceURL for the JMXConnectorServer: [service:jmx:rmi:///jndi/rmi://hostname:8686/management/ rmi-jmx-connector]. This is where the remote administrative clients should connect using the JSR 160 JMX Connectors.|#] |
Pour obtenir plus d'informations, reportez-vous au manuel Sun GlassFish Enterprise Server 2.1 Administration Guide .
Lors de la configuration de l'équilibreur de charge avec une application dotée d'un module EJB qui exporte l'URL d'un service Web, la racine du contexte du service Web ne figure pas dans le fichier loadbalancer.xml en résultant.
Modifiez le fichier loadbalancer.xml de manière à ajouter le module Web manquant comme suit :
<web-module context-root="context-root-name" disable-timeout-in-minutes="30" enabled="true"/> |
Remplacez la valeur context-root-name par le nom de la racine de contexte du service Web présenté comme EJB.
Le fichier .asadmintruststore n'est pas présenté dans la documentation d'Enterprise Server. Si ce fichier n'existe pas dans le répertoire home de l'administrateur, vous pouvez rencontrer de graves bogues lors de la mise à niveau d'applications hébergées sur le serveur.
Si possible, la commande asadmin start-domain domain1 doit être exécutée par l'utilisateur qui a installé le serveur.
Dans le cas contraire, le fichier .asadmintruststore doit être déplacé ou copié du répertoire home de l'utilisateur qui a procédé à l'installation dans le répertoire home de l'utilisateur qui l'exécute.
Notez que si le fichier est déplacé (et non copié) du répertoire home de l'utilisateur "installateur" dans le répertoire home de l'utilisateur "exécuteur", vous pouvez rencontrer des problèmes de mise à niveau de l'application, tels que décrits dans les bogues 6309079, 6310428 et 6312869 car l'utilisateur de mise à niveau/installation (généralement root dans Java ES) ne disposera plus du fichier .asadminstruststore dans son répertoire home.
Le mode d'intégration MQ par défaut d'une instance clusterisée d'Enterprise Server est LOCAL. Lorsqu'Enterprise Server est installé dans un emplacement (PATH) long (c'est-à-dire « non court »), imqbrokerscv.exe s'arrête brutalement au démarrage de l'instance clusterisée. Le problème provient d'une allocation de mémoire incorrecte dans imqbrokersvc.
Il est nécessaire de modifier le type de service JMS pour l'instance clusterisée, de la valeur par défaut LOCAL sur REMOTE. Avec cette configuration, toutes les instances pointent vers le courtier DAS. Suivez les instructions ci-dessous pour configurer un cluster en mode REMOTE.
Avec le mode REMOTE, toutes les instances n'utilisent qu'un seul courtier (DAS), par conséquent aucun cluster de courtier n'est créé au démarrage du cluster d'Enterprise Server. Consultez “Clustering automatique” à la section 4.1, division iii de la page http://www.glassfishwiki.org/gfwiki/attach/OnePagersOrFunctionalSpecs/as-mq-integration-gfv2.txt pour obtenir plus d'informations. La fonctionnalité susmentionnée ne sera pas disponible.
Modifiez le port et le fichier de mots de passe selon votre environnement. Notez que dans les instructions ci-dessous, le nom du cluster est racluster, le port d'administration DAS est 5858 et le port JMS DAS 7676 .
Modifiez la configuration du cluster, en changeant le type JMS sur REMOTE .
as-install/bin/asadmin.bat set --port 5858 --user admin --passwordfile \ as-install/bin/password_file racluster.jms-service.type=REMOTE |
Créez un hôte JMS correspondant à l'hôte JMS DAS.
as-install/bin/asadmin.bat create-jms-host --port 5858 --user admin --passwordfile \ as-install/bin/password_file --target racluster --mqhost localhost --mqport 7676 \ --mquser admin --mqpassword admin dashost |
Définissez l'hôte JMS DAS créé à l'étape précédente comme le nouvel hôte JMS par défaut.
as-install/bin/asadmin.bat set --port 5858 --user admin --passwordfile \ as-install/bin/password_file racluster.jms-service.default-jms-host=dashost |
Accédez à Configurations->cluster-name-config->Java Message Service->Hôtes JMS.
Cliquez sur Nouveau pour créer un nouvel hôte JMS ; nommez-le dashost.
Entrez les paramètres de configuration correspondant au service JMS pour le DAS ; les valeurs par défaut sont les suivantes :
Nom d'hôte : hôtelocal
Port : 7676
Utilisateur administrateur : admin
Password: admin
Modifiez ces paramètres au besoin pour votre service JMS DAS.
Retournez à l'onglet Java Message Service, puis modifiez le type de service JMS sur REMOTE (défini sur LOCAL par défaut).
Choisissez dashost à partir de la liste déroulante default-jms-host.
Enregistrez vos modifications, puis démarrez votre agent de nœud ou votre cluster.
Lorsque vous essayez d'afficher un diagramme de la page de contrôle des statistiques de journalisation à l'aide d'un navigateur non pris en charge, le message d'erreur suivant peut s'afficher :
Error loading jmaki.widgets.jmaki.charting.line.Widget : id=form1:jmaki_chart11 Script: http://easqelx5.red.iplanet.com:4848/resources/jmaki/charting/ \ line/component.js (line:5437). Message: area.initialize is not a function |
Utilisez un navigateur pris en charge. Reportez-vous à la section Navigateurs pour obtenir la liste des navigateurs pris en charge par Enterprise Server 2.1.
Dans les trois dernières versions principales d'Enterprise Server, le port d'administration par défaut a été modifié. De manière plus spécifique, les ports d'administration par défaut dans 7.x, 8. x et 9.x sont les suivants :
AS 7.x: 4848
AS 8.x : 4849
AS 9.x : 4848
Il ne s'agit pas d'un bogue mais d'un fait à prendre en compte. Le port d'administration par défaut est simplement une recommandation. Nous pensons d'ailleurs que les prochaines versions d'Enterprise Server conserveront le port 4848.
Sous le système d'exploitation AIX, toute tentative de création de domaine avec un mot de passe principal personnalisé échoue avec l'erreur suivante :
keytool error (likely untranslated): java.lang.NullPointerException Enter keystore password: New keystore password: |
Dans la procédure suivante, seules les options requises pour chaque étape sont présentées. Si vous avez besoin d'options supplémentaires pour une commande, spécifiez ces options directement dans la commande. Pour obtenir plus d'informations sur les commandes de Enterprise Server, reportez-vous au manuel de référence Sun GlassFish Enterprise Server 2.1 Reference Manual.
Créez un script shell comportant les lignes de code suivantes :
#!/bin/sh changeKeystorePass() { keytool -storepasswd -keystore ${KEYSTORE} -storepass ${OLD} -new ${NEW} } changeTruststorePass() { keytool -storepasswd -keystore ${TRUSTSTORE} -storepass ${OLD} -new ${NEW} } changeKeyPass() { keytool -keypasswd -alias s1as -keystore ${KEYSTORE} -storepass ${NEW} -keypass ${OLD} -new ${NEW} } changeDomainPasswordEntry() { keytool -storepasswd -storetype JCEKS -keystore ${DOMAINPASSWORDS} -storepass ${OLD} -new ${NEW} } deleteMasterPasswordFile() { if [ -f ${DOMAIN_PATH}/master-password ] ; then echo Deleting ${DOMAIN_PATH}/master-password rm -f ${DOMAIN_PATH}/master-password fi } DOMAIN_PATH=$1 OLD=$2 NEW=$3 if [ $# != 3 ] ; then echo Usage: $0 domain-path old-master-pass new-master-pass exit 1 fi echo Processing ... if [ ! -f ${DOMAIN_PATH}/config/domain.xml ] ; then echo "Domain with folder ${DOMAIN_PATH} does not exist, create it first" exit 2 else KEYSTORE=${DOMAIN_PATH}/config/keystore.jks TRUSTSTORE=${DOMAIN_PATH}/config/cacerts.jks DOMAINPASSWORDS=${DOMAIN_PATH}/config/domain-passwords changeKeystorePass changeTruststorePass changeKeyPass changeDomainPasswordEntry deleteMasterPasswordFile fi
Créez un domaine en spécifiant le mot de passe principal par défaut.
aadmin create-domain {--adminport aminportno|--portbase portbase} domain-name Please enter the admin user name>admin-user Please enter the admin password>admin-user-password Please enter the admin password again>admin-user-password Please enter the master password [Enter to accept the default]:> Please enter the master password again [Enter to accept the default]:> |
Le mot de passe principal par défaut est changeit.
Modifiez le mot de passe principal du domaine tout juste créé.
Pour ce faire, exécutez le script créé à l'Étape 1.
script-name domain-path old-password new-password |
Démarrez le domaine créé à l'Étape 2.
asadmin start-domain domain-name |
Étant donné que le domaine comporte un mot de passe principal personnalisé, vous êtes invité à saisir le mot de passe principal.
À l'invite correspondante, entrez votre nouveau mot de passe principal.
Pour les domaines configurés pour prendre les clusters en charge, créez et démarrez un agent de nœud.
Créez un agent de noeud pour le domaine réalisé à l' Étape 2.
asadmin create-node-agent --port portno --user admin-user |
Démarrez l'agent de noeud créé à l' Étape a.
asadmin start-node-agent |
Étant donné que le domaine comporte un mot de passe principal personnalisé, vous êtes invité à saisir le mot de passe principal.
À l'invite correspondante, entrez votre nouveau mot de passe principal.
Les principales pages d'Enterprise Server :
Sous le système d'exploitation AIX, certaines opérations liées au SE risquent d'échouer avec le message d'erreur suivant :
0403-027 The parameter list is too long |
Ce type d'opérations comprend par exemple le déploiement d'applications ou l'exécution du conteneur client de l'application.
Ce problème survient généralement en présence de longs chemins de fichier dans la variable d'environnement CLASSPATH.
Utilisez l'une des solutions suivantes :
Augmentez la longueur maximale de la ligne de commande. Pour plus d'informations, reportez-vous à la section (AIX) Augmenter la taille maximale de la ligne de commande.
Utilisez la commande xargs pour construire la liste d'arguments et démarrer la commande. La commande xargs permet aux commandes de dépasser la longueur maximale de la ligne de commande.
L'attribut ncargs détermine la longueur maximale de la ligne de commande, notamment des variables d'environnement. Sous le système d'exploitation AIX, la valeur par défaut de l'attribut ncargs est de 4 blocs de 4 Ko. Pour vous assurer que les commandes d'Enterprise Server ne dépassent pas la longueur maximale de la ligne de commande, augmentez cette valeur sur 16 blocs de 4 Ko.
Après avoir modifié la valeur de l'attribut ncargs, il n'est pas nécessaire de redémarrer ou de réinitialiser les démons.