Lancer un .jar depuis un script cgi perl

Résolu
Bonjour,

mon problème est que je n'arrive pas à lancer un .jar à partir d'un cgi écrit en perl (apache2), voici le code de mon cgi:

#!/usr/bin/perl

print "content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD><TITLE>Résultats: Sondes créées</TITLE></HEAD>\n";
print "<BODY>\n";
$ENV{QUERY_STRING}=~m/nomorga=(.*?)&idgene=(.*?)&nbrsondes=(.*?)&lngrsondes=(.*?)&sel=(.*?)&an=(.{4})/;
my $idorga=$1;
my $idgene=$2;
my $nbrsondes=$3;
my $lngrsondes=$4;
my $sel=$5;
my $an=$6;
my $arguments=$1." ".$2." ".$3." ".$4." ".$5." ".$6;
my $commande="java -jar \"/home/maroudel/NetBeansProjects/ProjetWS/dist/ProjetWS.jar\"";
my $commargs=$commande." ".$arguments;
print "Voici la ligne de commande pour exec:<br /><br /> $commargs";
print "</BODY>";
system ("java -jar \"/home/maroudel/NetBeansProjects/ProjetWS/dist/ProjetWS.jar\" hsa 10048 8 50 5.0 0.05");

j'obtiens bien la page web avec mes prints, mais rien en se passe d'autre.

Quand je lance la commande "java -jar \"/home/maroudel/NetBeansProjects/ProjetWS/dist/ProjetWS.jar\" hsa 10048 8 50 5.0 0.05" directement dans un terminal, elle fonctionne et m'affiche ma page web avec mes résultats ( codé dans la .jar).

J ai essayé de remplacer system par exec, ce qui n'a rien donné.
J ai ausi essayé de mettre exec("commande") avant mon print "Voici la ligne de commande pour exec:<br /><br /> $commargs";, ce qui a pour effet de tuer le processus et donc de ne rien afficher.

J'aimerais savoir si vous auriez une solution à me soumettre!
Merci
Configuration: Linux
Firefox 3.0.9

4 réponses

  1. Modérateur
    Salut,

    Essai
    system ("java", "-jar", "/home/maroudel/NetBeansProjects/ProjetWS/dist/ProjetWS.jar", "hsa 10048 8 50 5.0 0.05"); 
    En fait system prends en argument une liste.
    Il faut que tu sépare les éléments de la commande
    system("nom commande", "option1", "option2",...., "arg1", "arg2",...);


    0
    1. Meme probleme, j ai toujours une page qui s'affiche avec mes prints, mais rien d'autre ne se passe.
      0
      1. Modérateur
        Re,

        Ben, tu n'as que faire des tests, tout en tenir compte de ça

        <ital>En fait system prends en argument une liste.
        Il faut que tu sépare les éléments de la commande

        system("nom commande", "option1", "option2",...., "arg1", "arg2",...);/ital>
        0
        1. Ha, j'ai compris!
          En fait, j'avais bien testé la ligne de commande que tu m'avais donné, le seul truc, c'est que "hsa 10048... sont aussi des arguments, il m a suffit de suivre ton conseil et de les mettre chacun entre quote!
          Merci bien!
          0