Bonjour,
Je développe actuellement une application web pour mon entreprise. Elle permettra d'automatiser certains traitements lourds.
Cependant, un des traitements ne peut être automatisé (que ce soit par des batchs ou SQL), et pour simplifier la vie de la personne utilisant l'outil, on compte lui ouvrir le logiciel concerné avec quelques paramètres initialisés.
Pour faire ses traitements, l'utilisateur est obligé de se trouver sur le serveur (Remote Desktop Connection) (très peu de personne auront accès à cette partie de l'application).
Le problème:
Je développe en local sur Windows 7, avec Apache 7 (avec le plugin Eclipse).
Pour lancer une application externe, j'utilise ProcessBuilder ou encore Runtime.getRuntime().exec("la commande"). Le programme que je suis sensé lancer sur le serveur (PeopleSoft Application Designer) ne fonctionne pas sur Seven, je lance donc à la place Notepad++ pour les tests en local. Ça fonctionne très bien, le logiciel s'ouvre.
L'ouverture du logiciel est un traitement Ajax:
Je modifie les chemins pour qu'ils correspondent à ceux du serveur, je crée le .war, je déploie l'appli, je vais sur le serveur (Windows Server 2003 R2), je lance firefox (dernière version comme en local) et vais sur la page concernée. Et le logiciel refuse de se lancer.
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 String fs = System.getProperty("file.separator"); String notepad = "C:" + fs + "Program Files (x86)" + fs + "Notepad++" + fs + "notepad++.exe"; ProcessBuilder proc = new ProcessBuilder(notepad); proc.redirectErrorStream(true); final Process p = proc.start(); // traitement des erreurs avec les streams // ... if (p.waitFor() == 0) { // sb: StringBuilder qui récupère les flux // renderJSON: transforme l'objet en chaîne JSON renderJSON(sb); } } catch (IOException e) { renderJSON(e); } catch (InterruptedException e) { renderJSON(e); }
Les chemins sont bons, il n'y a pas de sorties d'erreurs (firebug). J'ai essayé Runtime.getRuntime(), j'ai essayé d'exécuter des batchs qui font des cd puis vont exécuter le logiciel. Rien n'y fait, il ne s'ouvre pas sur cette machine alors que chez moi oui (pour les tests, il y a aussi notepad++ sur le serveur).
Quelqu'un aurait-il une idée de ce qui se passe ? Ou comment lancer une application externe sur son serveur ?
Partager