IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Exécuter plusieurs commandes bat


Sujet :

Langage Java

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 238
    Points : 90
    Points
    90
    Par défaut Exécuter plusieurs commandes bat
    Bonjour, je cherche a redémarrer automatiquement mon serveur J2EE.
    J'arrive bien à l'arrêter, mais pas à le démarrer. (Le message "démarrage de jonas" apparait et puis...pouf j'attends indéfiniment.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    public class Main {
    public static void main(String[] args) {
    	try {
    		int c;
    		String fileName = "test.txt";
    		String strToSearch = "documenta";
    		String commande = "", resultat = "";
    		Process proc;
    
    			while (true) {
    			resultat = "";
    			// on lance la commande findstr pour chercher la chaine "Erreur 500"
    			commande = "findstr /C:" + strToSearch + " E:\\" + fileName;
    			proc = Runtime.getRuntime().exec(commande);
    
    			// récupère le résultat de la commande
    			InputStream in = proc.getInputStream();
    			while ((c = in.read()) != -1) {
    				resultat += ((char) c);
    			}
    			in.close();
    			proc.destroy();
    
    			if (resultat.length() == 0) {
    				// on a trouvé une erreur 500 il faut donc redémarrer le serveur
    				stopJOnAS();
    				startJOnAS();
    				}
    			}
    		} catch (IOException e) {
    			System.out.println(e.toString());
    		}
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    	// arrête le serveur
    	private static void stopJOnAS() {
    		System.out.println("Arrêt de JonAS");
    		String cmd = "E:\\JOnAS Stop.bat";
    		Process proc;
    		try {
    			proc = Runtime.getRuntime().exec(cmd);
    			proc.waitFor();
    			proc.destroy();
    			System.out.println("JOnAS arrêté !");
    		} catch (IOException e) {
    			System.out.println(e.toString());
    		} catch (InterruptedException e) {
    			System.out.println(e.toString());
    		}
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    	// démarre le serveur
    	private static void startJOnAS() {
    		System.out.println("Démarrage de JonAS");
    		String cmd = "E:\\JOnAS Start.bat";
    		Process proc;
    		try {
    			proc = Runtime.getRuntime().exec(cmd);
    			proc.waitFor();
    			proc.destroy();
    			System.out.println("JOnAS démarré !");
    		} catch (IOException e) {
    			System.out.println(e.toString());
    		} catch (InterruptedException e) {
    			System.out.println(e.toString());
    		}
    	}
     
    }
    Sauriez-vous m'aider ?
    Merci à vous !
    (@_@)

  2. #2
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    si le serveur démarre bien et qu'il n'y a pas d'erreur 500, tu reste indéfiniment dans ton while true


    il n'y a rien qui te fasse sortir de cette boucle....

    enfin si j'ai bien lu le code en tous cas

    [EDIT] Sorry, j'ai mal lu ton pb en fait Je retire ce que je disais, ça n'a rien à voir avec ton pb
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  3. #3
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    En même temps un while(true) c'est toujours choquant....
    Peux tu nous donner plus de précisions stp, tout d'abord as tu essayé de lancer ton Start.bat sans passer par Java pour démarrer le serveur, et est ce que c'a a marché ?
    Les deux principales inventions sorties de Berkeley sont UNIX et le LSD. Difficile de croire à une quelconque coïncidence - Jeremy S. Anderson

    Avant de vouloir qu’un logiciel soit réutilisable, il faudrait d’abord qu’il ait été utilisable - Ralph Johnson

  4. #4
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 238
    Points : 90
    Points
    90
    Par défaut
    Mon while(true) se justifie car j'ai mon serveur jonas arrive par moments a des saturations de mémoire.
    Pour cela, j'avais pensé a faire un traitement qui consiste a aller lire le fichier de log, et dans le cas où une erreur de mémoire, redémarrer le serveur.

    J'arrive bien à lancer mon serveur à la souris (et aussi a la ligne de commande)...

    En même temps, j'essaie de le faire sous batch, peut-être que ca marchera mieux...
    (@_@)

  5. #5
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    Citation Envoyé par n@n¤u
    Mon while(true) se justifie car j'ai mon serveur jonas arrive par moments a des saturations de mémoire.
    Pour cela, j'avais pensé a faire un traitement qui consiste a aller lire le fichier de log, et dans le cas où une erreur de mémoire, redémarrer le serveur.

    J'arrive bien à lancer mon serveur à la souris (et aussi a la ligne de commande)...

    En même temps, j'essaie de le faire sous batch, peut-être que ca marchera mieux...
    Pour le while true c'était une boutade, un serveur est prévu pour tourner indéfiniment même si dans ton cas on prévoit de le redemarrer.
    Plusieurs choses a te demander, tu dis que ton serveur arrive a saturation de mémoire, c'est à dire que la jvm te renvoi un OutOfMemory ?

    Si c'est le cas, d'abord as tu trouver d'ou ca vient ? dans quelles circonstances ? Je veux dire c'est ton ordi perso et que tu simules le comportement d'une dizaine de millier de client, ca peut etre normal, si c'est juste un client qui fait planté le serveur, cherche plutot a trouver ce qui ne vas pas avant de faire des rustines qui consisite à redemarrer le serveur.

    Si tu es sur que tes scripts bat fonctionnent, et que quand tu lances Start.bat le serveur est bien éteint normalement ca devrait marcher...
    Les deux principales inventions sorties de Berkeley sont UNIX et le LSD. Difficile de croire à une quelconque coïncidence - Jeremy S. Anderson

    Avant de vouloir qu’un logiciel soit réutilisable, il faudrait d’abord qu’il ait été utilisable - Ralph Johnson

Discussions similaires

  1. Exécuter plusieurs commandes avec JSCH en EXEC ou en SHELL sur un switch
    Par alecorps dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 03/04/2012, 17h11
  2. Réponses: 4
    Dernier message: 20/04/2011, 11h20
  3. [SSH] Exécuter plusieurs commandes à distance
    Par tck-lt dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 13/04/2011, 17h13
  4. Exécuter plusieurs commandes avec ShellExecute
    Par Kimish dans le forum Windows
    Réponses: 4
    Dernier message: 23/02/2009, 17h48
  5. Réponses: 10
    Dernier message: 03/04/2008, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo