PB dans l'exécution d'un jar via JWS

Résolu
kalamit Messages postés 307 Statut Contributeur -  
kalamit Messages postés 307 Statut Contributeur -
Hello world,

J'ai un petit soucis qui, je pense, sera résolu très vite grace à votre aide:

J'ai un jar executable qui se lance via java web start.
Dans ce jar, je ne parviens pas à executer ça :

Runtime monRuntime = Runtime.getRuntime();
String[] command = {"/sbin/shutdown", "-hP", "now"};
monRuntime.exec(command);

Je pense que le .exec pose problème dans un cadre JWS.

A noter que mon prog fonctionne très bien quand j'execute le jar sans JWS...

Quelqu'un aurait il une idée ?

Merci !

4 réponses

  1. kalamit Messages postés 307 Statut Contributeur 17
     
    Un petit up ?
    Siouplé !
    0
  2. kalamit Messages postés 307 Statut Contributeur 17
     
    Bon, j'me réponds à moi-même.

    A priori, cela viendrait pour l'utilisation de la classe Runtime :
    - du fait que le jar n'était pas signé
    - de la version de la jre > 1.5. Pour des questions de securité, la signature ne suffit plus.

    Quelle est la solution me direz-vous ?
    Il faut faire une infâme bidouille dans le fichier de policy de java qui devrait se trouver dans le répertoire /jreX/lib/security afin d'autoriser l'utilisation de la classe Runtime (entre autre).

    J'me rencarde sur ce qu'il faut mettre la dedans et je reviens.
    0
  3. kalamit Messages postés 307 Statut Contributeur 17
     
    OK, à priori, c'est vraiment laid.
    Trouvez la ligne
    permission java.lang.RuntimePermission "stopThread";
    dans le fichier java.policy, le sauvegarder quelque part et et mettre une * à la place du stopThread.

    Question securité, derrière ça c'est tout pourri. Donc gaffe...
    0
  4. kalamit Messages postés 307 Statut Contributeur 17
     
    Re,

    J'me corrige tout seul. Ce que j'ai dit précedemment est faux.
    Après test, il est impératif que:
    - le jar soit signé (une auto signature suffit, voir http://inouire.net/blog/index.php?post/2010/03/26/Signer-simplement-une-archive-jar pour plus de précision)
    - le .jnlp contienne cette ligne: <security> <all-permissions/> </security>

    Et ca suffit ! Il n'est point besoin d'aller fouiller dans le fichier java.policy

    J'ai mis en ligne mon exemple (attention l'application éteint le PC).

    http://web-verifier.com/fcs/halt.xhtml
    0