begin process at 2010 02 09 21:03:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Réseau & internet

 > 

JavaServerPage (JSP)

 > 

Processus Shell et Récupération de Paramètres


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Processus Shell et Récupération de Paramètres

mercredi 13 juin 2007 à 10:04:26 | Processus Shell et Récupération de Paramètres

Maiku

Bonjour

Actuellement en stage, je developpe une application web dynamique en Java/J2EE ave principalement des pages JSP.

Cette application est deployée sur un Serveur Linux avec le Serveur d'Application JBOSS 4.0.5 ( Container Tomcat 5.5.20 il me semble) et tourne avec un J.D.K 1.4.06 (jdk imposé).

Mon application java doit appeler une application Korn Shell existante et lui passer des parametres, et dans un deuxième temps en récupérer.

Voici le code actuel que nous utilisons pour faire nos tests :
String param1 = "nom_projet";
String param2 = "nom_user";
String param3 = "num_dt";
out.println("test de l'appel ksh<BR />");
try
{
Runtime rt = Runtime.getRuntime();
proc = rt.exec(System.getProperty("file.separator")+"produits"+System.getProperty("file.separator")+"adm_DT"+System.getProperty("file.separator")+"Creation_DT"+System.getProperty("file.separator")+"Creation_DT_test.ksh "+" "+param1+" "+param2+" "+param3);

// Consommation de la sortie standard de l'application externe dans un Thread separe
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = "";
try {
while((line = reader.readLine()) != null)
{
out.println("Sortie : "+line);
}
} finally {
reader.close();
}
} catch(IOException ioe) {
ioe.printStackTrace();
};

// Consommation de la sortie d'erreur de l'application externe dans un Thread separe
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
String line = "";
try {
while((line = reader.readLine()) != null) {
out.println("Erreur : "+line);
}
} finally {
reader.close();
}
} catch(IOException ioe) {
ioe.printStackTrace();
}


}
catch(IOException e)
{
out.println("Fichier non trouvé : "+e.getMessage());
}
catch(Exception e)
{
out.print("Une Erreur a eu Lieu :"+e.getMessage());
}

Pour le moment voici ce qui marche :

- le script ksh est bien trouvé, correctement appelé et executé
- il recupere bien les parametres puisque le programme(ksh) redirige les parametres recuperée dans un fichier log

Pour ce qui est de l'affiche des erreurs ou des parametres, rien n'est renvoyé, ou alors c'est que du "null".

Normalement le programme ksh renvoi "exit $code_retour" avec $ code_retour qui vaut 0.

Je cherche a récupérer cette valeur et à l'afficher sur la page JSP du serveur.

Quelqu'un peut-il m'aider car j'ai déjà usé par mal de solution .?
Merci d'Avance pour vos réponses

Maiku
mercredi 13 juin 2007 à 10:56:29 | Re : Processus Shell et Récupération de Paramètres

Twinuts

Membre Club Administrateur CodeS-SourceS
Salut,

pour ce qui est de la recup. du code de sortie tu peux le faire avec 'exitValue()' mais faut le faire apres le 'waitFor()' sinon tu vas te manger une exception
et pour la recup des flux tu pourrais faire un Thread que tu lances apres le 'exec' et que tu stop apres le waitFor...

exemple de Thread

public class ReadStream extends Thread {

    private InputStream    is        = null;
    private boolean        stdErr    = false;
    private boolean        end        = false;

    public ReadStream(InputStream is, boolean stdErr) {
        this.is = is;
        this.stdErr = stdErr;
    }

    public void end() {
        end = true;
    }

    public void run() {
        while(!end) {
            try {
                BufferedReader br = new BufferedReader(new InputStreamReader(is));
                String line = null;
                while((line = br.readLine()) != null)
                    if (stdErr)
                        System.err.println(line);
                    else System.out.println(line);
                br.close();
                sleep(100);
            }
            catch(Exception e) {
                end = true;
            }
        }
    }
}

tu fais ton exec ensuite :
ReadStream stdOut = new ReadStream(proc.getInputStream(), false);
stdOut.start();

ReadStream stdErr = new ReadStream(proc.getErrorStream(), true);
stdErr.start();

proc.waitFor();
stdOut.end();
stdErr.end();
int exitCode = proc.exitValue();


enfin un truc du style ^^

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO


Cette discussion est classée dans : application, string, out, line, reader


Répondre à ce message

Sujets en rapport avec ce message

Stocker un tableau dans un bean [ par funkytownradio ] Bonjour !! J'aimerais savoir si il est possible de stocker un tableau multidimensionnel (du type String[][] tableau = new String[5][]) dans un bean d' Stocker un tableau dans un bean [ par funkytownradio ] Bonjour !! J'aimerais savoir si il est possible de stocker un tableau multidimensionnel (du type String[][] tableau = new String[5][]) dans un bean d' Stocker un tableau dans un bean [ par funkytownradio ] Bonjour !! J'aimerais savoir si il est possible de stocker un tableau multidimensionnel (du type String[][] tableau = new String[5][]) dans un bean d' compatibilité argument File String [ par sido722 ] Mon erreurMafenetre4.java:181: tests(java.io.File) in Mafenetre4 cannot be applied to (java.lang.String) tests(file.getAbsolutePath()); acces au contenu d'un message avec javamail [ par amine hayat ] Bonjour. Voici mon problème.Je suis en train de faire une appli qui doit recevoire et envoyer des emails dans une boîte mail. mon probléme est que je petite souci dans ce code [ par guelop80 ] voila ce que je doit faire:java Tel michel Affiche le numro de tlphone du contact "michel".java Tel -i michel "01 23 45 67 89" Insert le numro d Permier écouteur [ par fafa00 ] HelloVoici mon problème :Je veux récupérer du texte dans un JTextField et l'écrire à l'envers dans un JLabel en cliquant sur un bouton.Voici mon code AIDE sur Connexion BDD MySQL [ par zeldoi5 ] Bonjour tout le monde!Je sais que le problème dont je vais parler a déjà été traité plusieurs fois... Mais impossible de me connecter à ma base de don Apparition d'une fenetre vide [ par Dedeloux ] Bonjour à tous, voilà, j'ai un petit problème. Je fais une recherche sur des fournisseurs. J'aiffiche cette recherche dans une fenetre. Je peux alors JPANEL [ par LeNeutrino ] je suis en projet et je souhaiterais faire un formulaire et pour les insertions de données et pour les consultations. j'utilise un jdbnavcombox relié


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,250 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales