web-dev-qa-db-fra.com

Comment décompresser et reconditionner un fichier WAR

J'ai un fichier WAR. Je voudrais l'ouvrir, éditer un fichier XML, supprimer des bocaux, puis le reconditionner.

J'ai utilisé WINRAR pour ouvrir le fichier WAR, j'ai retiré des fichiers JAR, effectué une "Ajout à l'archivage" dans WinRar et créé un WAR.

Lorsque j'ai déployé le fichier WAR dans le dossier jboss, une exception s'est produite.

   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 WAR?

32
Vinoth Kumar C M

vous pouvez mettre à jour votre war à partir de la ligne de commande en utilisant les commandes Java mentionnées ici:

jar -uvf test.war yourclassesdir 

Autres commandes utiles:

Commande pour décompresser/exploser le fichier war

jar -xvf test.war

Commande pour créer le fichier war

jar -cvf test.war yourclassesdir 
63
Juned Ahsan

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 ..
3
Agam

En fonction des réponses ci-dessus, cela fonctionne pour Tomcat, mais peut également être adapté pour JBoss ou tout autre 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
3
user2066936

Je suis sûr qu'il existe des balises ANT pour le faire, mais j'ai utilisé ce script 7Zip dans le fichier .bat. J'utilise http://www.7-Zip.org/ outil en ligne de commande. Toutes les fois que j'utilise ceci pour changer l'URL de jdbc dans le fichier j2ee context.xml.

mkdir .\temp-install
c:\apps\commands\7za.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\commands\7za.exe u -y -tzip mywebapp.war ./temp-install/mywebapp/*
rmdir /Q /S .\temp-install

Vous pouvez extraire un fichier .war en entier (son zip après tout), supprimer des fichiers, remplacer des fichiers, ajouter des fichiers, modifier des fichiers et les reconditionner dans un fichier archive .war Mais changer un fichier dans une grande archive .war peut être préférable d’extraire un fichier spécifique puis de mettre à jour l’archive originale.

1
Whome

copiez votre fichier war dans /tmpnow en extraire 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.war votre fichier mis à jour.

1
Barani r

inutile de le faire, Tomcat extrait naturellement le fichier war dans un dossier du même nom . vous modifiez simplement le fichier souhaité dans ce dossier (y compris les fichiers de configuration .xml), c’est tout . techniquement plus besoin de redémarrer Tomcat après application des modifications

0
yasin

Non par programme, vous pouvez simplement ouvrir l’archive à l’aide de l’interface utilisateur 7Zip pour ajouter/supprimer ou extraire/remplacer des fichiers sans modification de la structure. Je ne savais pas que c'était un problème d'utiliser d'autres choses jusqu'à maintenant :)

0
Griknok

Peut-être avez-vous modifié la structure de la guerre ou l'avez-vous déployé sur une autre version du serveur. Commander ces liens Erreur lors du déploiement de war dans JBoss AS 7 (mode domaine): "Echec du traitement de la phase STRUCTURE du déploiement" et https://community.jboss.org/thread/199387?start=0&tstart=0&_sscc = t

0
Barun