2010-09-29 11 views
2

Vous avez un problème de Glassfish étrange ici. Voici comment reproduire:Comment changer le port Admin sur Glassfish dans un script

(1) Installez Glassfish v3
(2) Commencez votre domaine par défaut:

$GLASSFISH_HOME/bin/asadmin start-domain domain1 

(3) Changer le port d'administration (vous devez entrer uid admin & mot de passe, dans notre script que nous utilisons les paramètres -W -u &):

$GLASSFISH_HOME/bin/asadmin set configs.config.server-config.network-config.network-listeners.network-listener.admin-listener.port=34848 

(4) Arrêter le domaine:

$GLASSFISH_HOME/bin/asadmin stop-domain domain1 

Vous verrez que cela ne fonctionne pas. Vous obtenez:

CLI306 Warning - server is not running. 
Command stop-domain executed successfully. 

Mais votre processus Glassfish est toujours en cours. Pire, lorsque vous essayez de démarrer le processus, vous obtenez un avertissement que certains de vos ports sont déjà utilisés. Bien sûr qu'ils le sont, le vieux processus les a encore! Votre seul moyen de sortir est killall -9 java

Alors que certains des changements de configuration sont dynamiques, il semble que ce ne l'est pas, mais l'arrêt de domaine suppose qu'il est dynamique et utilise le nouveau port pour essayer et exécuter la commande.

solutions possibles sont les suivantes:

(1) Utilisez sed sur domain.xml - préféreraient ne pas car il est compliqué & Grepping risqué par le code XML. J'ai vu Glassfish changer l'ordre des attributs dans ce fichier afin que nous ne puissions pas simplement sed pour port="4848"
(2) Utilisez le programme d'installation par script plutôt que le fichier zip et alimentez les paramètres du programme d'installation en tant que fichier de réponse - ceci est problématique pour nos scripts d'installation qui doivent être puissants.
(3) Utilisez un zip personnalisé de l'archive d'installation de Glassfish avec domain.xml déjà changé - pas une option car le port que nous définissons peut changer dans le futur.

C'est presque la définition d'un cas de coin mais nous devons le résoudre. Pour l'instant, nous allons sed domaine.xml mais il serait bon de savoir si il y avait un moyen qui est possible via l'interface de ligne de commande.

Répondre

1

Vous pouvez effectuer les opérations suivantes à la place ...

  1. installer v3 en décompressant
  2. supprimer domain1
  3. créer un nouveau domain1 en utilisant les ports que vous préférez. Le man page for the create-domain subcommand aura tous les détails
  4. commencer ce nouveau domaine ...

Pas de démarrage supplémentaire ou arrêter nécessaire (et vous pouvez sauter l'étape 2 si vous êtes prêt à ne pas oublier de dire « asadmin start-domain mondomaine » au lieu de « asadmin start-domain »

+0

Duh ... merci -toi! –

0

Sed n'a pas été aussi mauvais que je pensais que ce serait peut-être, voici ce que je faisais:

cd $GLASSFISH_HOME 
sed -i.bak '/<network-listener[^>]*name="admin-listener"/s/port="4848"/port="34848"/g' glassfish/domains/domain1/config/domain.xml 

Il est encore un bug qui asadmin pense que le changement de port est dynamique quand il est pas, mais je peux vivre avec ce hack.

Questions connexes