IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Conception Web Discussion :

Lancer un programme Java sur le serveur en JavaScript ou PHP


Sujet :

Conception Web

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Lancer un programme Java sur le serveur en JavaScript ou PHP
    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.

  2. #2
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    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

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    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.

  4. #4
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    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

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    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.
    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();
    	} 
    };
    C'est lorsque j'exécute le meme code en ajoutant les accès à la DB que ca ne fonctionne pas.

    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

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    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 :
    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"');
    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.

    A bientot

  7. #7
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    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.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec("start http://url");
    La page qui se lance sur le serveur contient un javascript qui se lance par le body onload.
    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

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    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.

  9. #9
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    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

  10. #10
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    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+

Discussions similaires

  1. Exécuter un programme Java sur un serveur de calcul
    Par youza dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 20/01/2012, 10h59
  2. lancer une application java sur un serveur distant en exécutant un script shell
    Par M_Dandouna dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 12/06/2008, 14h40
  3. [MAC] Installer un programme java sur mac
    Par spekal dans le forum Général Java
    Réponses: 10
    Dernier message: 17/07/2006, 16h17
  4. [VB.NET 2.0] Lancer une application installee sur un serveur
    Par kissskoool dans le forum Windows Forms
    Réponses: 13
    Dernier message: 01/06/2006, 13h19
  5. Lancer un programme, mais sur une autre machine
    Par GOUGOU1 dans le forum Réseau
    Réponses: 12
    Dernier message: 08/12/2002, 20h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo