Bonjour, je voudrais savoir si il existe un code java script ou php pour lancer un programme java sur le serveur.
Merci de votre aide.
Bonjour, je voudrais savoir si il existe un code java script ou php pour lancer un programme java sur le serveur.
Merci de votre aide.
salut,
le javascript ce joue uniquement sur le poste client donc pour ton problème c'est purement php essais la fonction exec()
la vie n'est pas cirrhose des foies ...
Avant de poster un message Rechercher n'est pas qu'une option.
FAQ Web - Tuto Web
Bonjour,
J'ai à peu près le même problème que rimhamdi. L'exécution depuis la fonction exec d'une application console java fonctionne.
Ce qui ne fonctionne pas, c'est que dans cette application, j'ai une connexion en JDBC à une base de données MySQL. En fait, j'envois en ligne de commande des paramètres permettant la création d'une requête SQL (Insert, Update, Delete).
L'application est exécutée sur Ubuntu. Lorsque je la lance depuis une ligne de commande dans un terminal, cela fonctionne. Donc si je mets en ligne de commande des paramètres pour une insertion dans la db, cela effectue bien l'opération.
C'est lorsque j'exécute cette même application depuis un script php (via exec) que l'opération sur la db ne marche pas.
Avez-vous une idée d'où peut venir ce problème ?
Merci pour vos réponses.
peut être des droits utilisateurs.
la vie n'est pas cirrhose des foies ...
Avant de poster un message Rechercher n'est pas qu'une option.
FAQ Web - Tuto Web
Droits d'utilisateurs par rapport à quoi ? L'accès à la DB, ou au programme java ?
Parce que le programme java s'exécute bien si je ne met pas d'accès à la DB.
Le code ci-dessous fonctionne depuis un exec php.
C'est lorsque j'exécute le meme code en ajoutant les accès à la DB que ca ne fonctionne pas.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 public class sqlexec { private Licence lic; private String user; private String password; private String db; private String query; public sqlexec(String[] args) { lic = new Licence(); lic.verificationLicence(); if(args.length<5) { System.out.println("Erreur parametre"); System.exit(0); } else { String user=args[0]; String pass=args[1]; String db=args[2]; String typerequest=args[3]; String table=args[4]; if(typerequest.compareTo("INSERT")==0) { if(args.length<7) { System.exit(0); } String listecolonne=args[5]; String listevalue=args[6]; System.out.println("Requete insert"); query=typerequest+" INTO "+table+" ("+listecolonne+") VALUES ("+listevalue+");"; } else { if(typerequest.compareTo("UPDATE")==0) { if(args.length<6) { System.exit(0); } String listecolonne=args[5]; System.out.println("Requete update"); query=typerequest+" "+table+" SET "+listecolonne+";"; } else { if(typerequest.compareTo("DELETE")==0) { if(args.length<6) { System.exit(0); } String condition=args[5]; query="DELETE FROM "+table+" WHERE "+condition+";"; } } } } } public void execute() { System.out.println("Execution de : "+query); } public static void main(String[] args) { sqlexec plugin= new sqlexec(args); plugin.execute(); } };
Comme dit plus haut, le code fonctionne si je l'exécute en ligne de commande avec accès à la DB. J'ai lu sur d'autres sites que ca pourrait venir de l'espace mémoire alloué à l'application depuis l'exec qui ne serait pas assez important.
Je vais peut etre refaire ce module en C ou C++ et voir ce que ca donne. Et si ca ne marche pas, voir avec les servlets... mais ca sera un changement complet de l'application
J'ai trouver la raison. J'aurai du vous mettre la commande que je mettais dans l'exec .
En fait il manquait un "
Je faisais :
au lieu de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 exec('java -jar "/chemin/vers/mon/jar et la liste de mes parametres ici"');
Tout est en ordre maintenant, merci quand même Vil'Coyote.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 exec('java -jar "/chemin/vers/mon/jar" et la liste de mes parametres ici');
A bientot
Puis-je profiter de la discussion pour exposer un problème que j'ai justement avec le lancement d'un script côté serveur.
Je m'explique :
Côté client, je clique sur un bouton sur mon site et côté serveur, pendant l'execution du code PHP, j'ai un exec() qui lance une page web sur le serveur.
La page qui se lance sur le serveur contient un javascript qui se lance par le body onload.
Code : Sélectionner tout - Visualiser dans une fenêtre à part exec("start http://url");
Si je fais un .bat que j'exécute avec la commande ci-dessus, directement sur le serveur, ça marche, mais si je passe par l'exec(), il va effectivement lancer IE et la page, mais il n'executera pas le javascript.
Pourquoi ? Comment faire pour executer le javascript malgré cela ?
En vous remerciant d'avance
Salut,
Pour compléter mon dernier message, j'ai tenté avec les fonctions exec, system, shell_exec, passthru et ça ne marche pas.
J'ai tenté de faire autrement en utilisant un objet COM pour lancer Wscript.Shell.
Pas mieux...
CURL ne répond pas à mon problème.
J'avais essayer avec un petit programme socket mais mon service informatique m'a demandé d'éviter (sauf si c'est un truc super light).
J'ai aussi complètement changé le code en supprimant tout ce qui attrait au javascript, c'est à dire que tout est géré au niveau de PHP avec une boucle et un sleep pour attendre que les éléments s'initialisent.
Mais ça ne marche toujours pas.
Je vais représenter le problème :
J'ai mon portail intranet avec une série de liens, quand un utilisateur clique sur un de ces liens, un script Java (pour faire de l'asynchrone) lance sur le serveur un script PHP. Ce dernier va inscrire une demande de traitement dans une base de donnée et lancer à son tour une session IE (il va ouvrir IE quoi...) à l'adresse qu'il passe en paramètre dans la commande exec ("start http://monintranet.php?paramètre") , attendre que les autres traitements soient terminés pour lancer le sien quand c'est son tour, lance le traitement, enregistre le résultat et inscrit l'adresse du fichier dans la base de données.
Pendant ce temps, sur le client (mais c'est pas le plus important ça), une fenêtre affiche l'état d'avancement de la procédure.
J'entends d'ici tout le monde me dire "mais pourquoi tu lances une session IE sur le serveur au lieu de faire ça en direct ?".
Et bien tout simplement parce que si l'utilisateur ferme son navigateur ou change de page, le traitement s'arrête. Alors je veux que ça soit lancé sur le serveur et comme ça l'utilisateur pourra toujours aller consulter le fichier en cliquant sur un lien.
J'ai très clairement l'impression (presque la certitude) que le script n'est pas executé quand IE s'ouvre sur le serveur. Surtout que je peux juste voir qu'il s'est lancé dans le gestionnaire des tâches mais rien n'apparait à l'écran.
Quelles alternatives me restent-il ?
Comment faire pour faire afficher IE (ou tout autre programme) à l'écran du serveur quand on passe par un exec() ?
En vous remerciant d'avance.
d'après ce que j'ai tester dans ma boîte quand on lance ie en local, on a le jolie fenêtre "cette page contient un contenu bloquer, voulez vous exécuter le script tout de même blabla ...."
PS: comme tu la dis, je comprend pas le but de la manoeuvre car l'utilisateur à la barra d'affichage indiquant le chargement donc si tu jouai le tout en live avec de l'ajax tu aurais le même résultat.
PS2: le start marche avec le nom de l'exécutable, je crois pas que cela fonctionne avec une url, si?
la vie n'est pas cirrhose des foies ...
Avant de poster un message Rechercher n'est pas qu'une option.
FAQ Web - Tuto Web
Salut,
De mon côté j'ai fait quelques tests.
En fait, ça fonctionne de façon assez aléatoire. Je ne saurai dire pourquoi.
Pour répondre à ton PS2, la commande start avec une url fonctionne effectivement et, en fait, ça lance automatiquement IE.
Maintenant, ce que je n'arrive pas à faire c'est afficher le programme à l'écran du serveur.
Avec tous ces problèmes, je me dis qu'il faut que je trouve un autre moyen. Si c'est instable ou aléatoire, mon boss me tuera dès que ça déconnera
Je suis sûr que c'est un problème lié au serveur.
Je vais essayer de faire un petit prog java, mais franchement, ça me fait
Mais ça sera toujours mieux que de serrer les fesses en espérant que ça passe à chaque fois que quelqu'un s'en servira.
Au fait, java, c'est le bon choix ?
A+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager