Comment déballer et réemballer un fichier de guerre
j'ai un dossier de guerre. J'aimerais l'ouvrir, éditer un fichier XML, enlever des pots et ensuite le re-empaqueter.
J'ai utilisé WINRAR pour ouvrir le fichier WAR et j'ai enlevé quelques pots et j'ai fait un 'Add to Archive' dans WinRar et j'ai créé une guerre.
quand j'ai déployé la guerre dans le dossier jboss, j'ai eu une exception.
16:05:14,316 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2)
MSC00001: Failed to start service jboss.deployment.unit."myapplication.war".
STRUCTURE: org.jboss.msc.service.StartException in
service jboss.deployment.unit."myapplication.war".STRUCTURE:
Failed to process phase STRUCTURE of deployment "myapplication.war"
comment reconditionner la guerre ?
8 réponses
vous pouvez mettre à jour votre guerre depuis la ligne de commande en utilisant les commandes java comme indiqué ici:
jar -uvf test.war yourclassesdir
autres commandes utiles:
commande pour décompresser / exploser le fichier de guerre
jar -xvf test.war
commande pour créer le fichier de guerre
jar -cvf test.war yourclassesdir
adapté des réponses ci-dessus, cela fonctionne pour Tomcat, mais peut être adapté pour JBoss aussi bien que pour n'importe quel conteneur:
sudo -u tomcat /opt/tomcat/bin/shutdown.sh
cd /opt/tomcat/webapps
sudo mkdir tmp; cd tmp
sudo jar -xvf ../myapp.war
#make edits...
sudo vi WEB-INF/classes/templates/fragments/header.html
sudo vi WEB-INF/classes/application.properties
#end of making edits
sudo jar -cvf myapp0.0.1.war *
sudo cp myapp0.0.1.war ..
cd ..
sudo chown tomcat:tomcat myapp0.0.1.war
sudo rm -rf tmp
sudo -u tomcat /opt/tomcat/bin/startup.sh
cela a fonctionné pour moi:
mv xyz.war ./tmp
cd tmp
jar -xvf xyz.war
rm -rf WEB-INF/lib/zookeeper-3.4.10.jar
rm -rf xyz.war
jar -cvf xyz.war *
mv xyz.war ../
cd ..
je suis sûr qu'il y a des balises ANT pour le faire mais j'ai utilisé ce hack 7zip .chauve-souris de script. J'utilise http://www.7-zip.org/ outil de ligne de commande. Toutes les fois où je l'utilise pour changer l'url JDBC dans le contexte j2ee.fichier xml.
mkdir .\temp-install
c:\apps\commandsza.exe x -y mywebapp.war META-INF/context.xml -otemp-install\mywebapp
..here I have small tool to replace text in xml file..
c:\apps\commandsza.exe u -y -tzip mywebapp.war ./temp-install/mywebapp/*
rmdir /Q /S .\temp-install
vous pourriez extraire entier .la guerre de fichiers (zip, après tout), supprimer des fichiers, remplacer des fichiers, ajouter des fichiers, modifier les fichiers et de les reconditionner .la guerre du fichier d'archive. Mais changer un fichier dans un grand .archives de guerre ce serait peut-être mieux extraire un fichier spécifique puis mettre à jour l'archive originale.
peut-être, vous avez modifié la structure de la guerre ou de le déployer sur une version de serveur différente. Commande ces liens erreur déployant la guerre dans JBoss AS 7 (mode domaine): "échec de traiter la STRUCTURE de phase de déploiement" et https://community.jboss.org/thread/199387?start=0&tstart=0&_sscc=t
Non programmatique, vous pouvez simplement ouvrir l'archive en utilisant l'interface utilisateur 7zip pour ajouter/supprimer ou extraire/remplacer des fichiers sans que la structure change. Je ne savais pas que c'était un problème d'utiliser d'autres choses jusqu'à maintenant:)
pas besoin, tomcat naturellement extraire le fichier war dans un dossier du même nom. vous modifiez simplement le fichier désiré dans ce dossier (y compris .fichiers de configuration xml), c'est tout. techniquement pas besoin de redémarrer tomcat après l'application des modifications
copiez votre fichier war vers /tmp maintenant, extrayez le contenu:
cp warfile.war /tmp
cd /tmp
unzip warfile.war
cd WEB-INF
nano web.xml (or vim or any editor you want to use)
cd ..
zip -r -u warfile.war WEB-INF
maintenant vous avez dans /tmp / warfile.guerre votre fichier de mise à jour.