2009-10-27 7 views
1

J'ai besoin d'un script shell Windows qui va redéployer mon fichier .ear. J'ai écrit un:JBoss Application Server redéployer

net stop "JBAS50SVC" 
copy /y O:\TEMP\app.ear C:\jboss-4.2.3.GA\server\default\deploy\app.ear 
net start "JBAS50SVC" 

Mais le problème est que lorsque je tente d'arrêter le service JBoss ne se déchargent pas complètement (ma suggestion), donc quand je le démarre il n'y a aucune application déployée dans JBoss.

Répondre

1

Typiquement, pour redéployer une application qui est autonome dans une oreille dans jboss, il suffit de remplacer l'oreille. S'il y a plus à l'application (comme les classes qui doivent aller dans le répertoire lib de jboss) alors cela peut nécessiter un redémarrage.

En termes de redémarrage, cela dépend de ce que vous utilisez pour démarrer jboss en tant que service. Certains démarreurs de service ne contrôlent pas réellement le jvm après leur démarrage, ainsi le redémarrage du service démarre juste une seconde instance. Vous pouvez arrêter jboss avec le script shutdown dans le répertoire JBOSS_HOME/bin (shutdown.bat), puis déployer et redémarrer le service. Veillez à faire une pause lorsque vous faites cela, car la commande shutdown émettra la demande d'arrêt, le serveur peut encore être en cours d'exécution.

0

Vous pourriez vouloir vérifier le JBoss community wiki là-dessus, il y a des méthodes sûrement plus faciles et plus sûres qu'un fichier séquentiel.

L'arrêt du serveur ne devrait pas annuler le déploiement de l'application - cela n'aurait pas beaucoup de sens.

+0

J'arrêtez le service juste pour copier mon nouveau fichier .ear. Je ne veux pas utiliser la fonctionnalité autodeploy, car dans ce cas JBoss devient très lent après un mois ou deux. – baobab12

1

Vous pouvez simplement COPIER/RENOMMER le fichier EAR pour déployer le répertoire. JBoss prendra automatiquement en charge le re-déploiement pour vous.

1

Comme mentionné précédemment, jboss déploie automatiquement tout ce que vous copiez dans le répertoire de déploiement par défaut.

Si ce n'est pas le cas, vérifiez si vous travaillez sur un serveur virtuel qui n'autodiffuse pas les fichiers d'écoute.

<Host name="vhost2" autoDeploy="false" .... /> 

autre que cela, je me sens comme ceci est une erreur tout à fait différente en raison du fait que jboss prend en charge le déploiement pour vous. Veuillez vérifier les fichiers journaux pour les erreurs de démarrage de votre application.

+0

Oui, jboss déploie automatiquement les fichiers, mais lorsque j'utilise la fonctionnalité autodeploy et que JBoss fonctionne depuis un mois ou plus, il devient très lent. – baobab12

2

Vous avez mentionné que JBoss devient très lent lorsque vous utilisez autoDeploy et que le serveur reste actif pendant un mois ou plus. C'est probablement parce que votre mémoire de génération permanente se remplit avec le temps. Voir this related question.

Je pense que vous seriez mieux servi en utilisant la fonction autoDeploy comme le suggèrent d'autres, et en redémarrant le serveur entier périodiquement pour vider PermGen. Il existe plusieurs façons de suivre l'utilisation de PermGen. Ajouter ce qui suit à JAVA_OPTS dans run.conf:

-XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -Xloggc:$LOGDIR/gc.log 
+0

Merci! Il semble que c'est la seule solution viable. – baobab12

Questions connexes