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

Langage Java Discussion :

Execution d'un class Java sur une machine distante (RMI ?)


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 61
    Points : 39
    Points
    39
    Par défaut Execution d'un class Java sur une machine distante (RMI ?)
    Bonjour tout le monde,
    J'ai une application Java qui traite des fichiers de grande taille. Selon des contraintes dans cette application, elle doit être executer localement, i.e. sur des fichiers locales.
    Mais on a besoin des fois de traiter des fichiers qui se trouvent sur une autre machine. La solution envisageable est de faire une connexion FTP ou HTTP et récupérer un InputStream de fichier distant et le donner comme entrée à cette application pour traiter....
    Le problème c'est que cette solution n'est pas très performante vu de taille des fichiers et le transfère sur le réseau.

    Du coup, je me dis s'il y a une solution qui permet d'envoyer le class de cette application sur la machine distante et demander l'exécution de cette application envoyée sur la machine distante de manière local et récupérer seulement des résultats via réseau...
    En effet je pense à RMI ou CORBA mais je ne sais pas comment ils marchent (j'en ai jamais fait). Est-ce possible d'envoyer une application sur une autre machine et l'exécuter la-bas? Si oui quelles sont des contraintes? surtout au niveau des caractéristiques des deux machines?
    Ou autre solution?????

    Je vous remercie tous d'avance
    Hassan

  2. #2
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    Oui c'est parfaitement possible avec RMI.

    Le principe c'est que tu lance une sorte d'annuaire sur la machine distante via la commande rmiregistry apres tu peux avoir un petit programme sur la machine distante qui te permet de manipuler ton fichier, tu enregistre la classe dans l'annuaire via Naming.rebind

    Ensuite sur ta machine local tu peux appeler l'object en question via Naming.lookup("NOM");

    Ensuite toutes la manipulation sur l'objet récupérer se font sur la machine distante.
    Par contre tu doit générer des stub et des skeleton via une commande mais de meme je ne me souviens plus la syntaxe éxact, cependant tu trouvera facilement des tuto via google.

    Tu peux également pousser le vice jusqu'à éxécuter des object sur X machine distante via ton programme en local.

    Si tu t'en sort pas, je posterais un exemple, j'en ais sur mon PC perso.
    Nicolas,
    " Je préfère comprendre les gens qui ne me comprennent pas "

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 61
    Points : 39
    Points
    39
    Par défaut
    Merci Nicolas,
    Cela m'a adié. En fait j'ai jamis fait ce gendre de programmation et du coup j'en connais pas tros. Seulement en tant que informaticien j'avais entendu de parler RMI et CORBA et distributed programming

    Mais il m'arrive une question :
    Si j'ai bien compris pour RMI, il faut avoir des objets remote sur l'hôte. Mais est-ce possible de copier une version exécutable de l'application sur la machine hôte et ensuite l'appeler en lui donnant des paramètres. Puis, on récupère des résultats enregistrés dans un fichier sur le hôte.
    Si cela peut marcher, alors c'est quoi des avantages de RMI? pourquoi RMI? Où d'ailleurs comment appeler une application java exécutable (par call process ????)

    Merci d'avance
    Hassan

  4. #4
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    Si tu copie le programme sur la machine distante il faut le lancer depuis la machine distante, après pour lui passer des arguments à distance, à ma connaissance ce n'est pas possible, mise à part avec ces solutions :
    - Les web services
    - Les sockets
    - RMI

    Pour utiliser RMI il faut juste que l'annuaire soit démarrer, tu peux enregistrer un object dans l'annuaire depuis une machine distante, donc tu n'est pas obliger d'avoir ton programme Java sur la machine hôte (enfin je crois pas, j'ai un doute => à tester ), si mes souvenirs sont bon tu peux spécifier une adresse lorsque tu fais un Naming.rebind("rmi://xxxx",obj);

    Pour lancer un programme java, il faut avoir un jar éxécutable ou le transformer en point EXE.

    De toute facon il faut absolument une manip sur la machine distante.
    - Lancer la programme qui fera ton interface avec l'annuaire.
    - Lancer l'annuaire ( un batch suffit mais il faut le jdk dessus je crois)
    - Lancer le proramme qui utilisera les sockets
    - Avoir un serveur d'appli pour les web service.

    Aucunes méthodes n'est sans inconvénient.
    L'intérêt de RMI c'est de pouvoir appeler des objects distant depuis un programme local assez facilement sans se casser la tete avec les sockets.
    La communication entre les deux programmes ou entre ton programme et l'annuaire se fait à partir d'interface donc cette éxécution distante est transparente.
    D'ailleurs si je ne m'abuse les EJB utilise RMI.
    " Je préfère comprendre les gens qui ne me comprennent pas "

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 61
    Points : 39
    Points
    39
    Par défaut
    Bonjour
    Merci pour la réponse.
    En effet le problème c'est qu'on a pas toujours accès au serveur (remote machine). Du coup, je cherche une solution qui permet d'exécuter une application sur une machine distante sans besoin de démarrer ou de manipuler quelques choses sur la machine distante. Bien sur, s'il faut installer quelques chose pour une fois, cela n'est pas un souci, mais pas chaque fois qu'on veut appeler une méthode distante.
    Je veut dire, est-ce qu'il y a une solution de automatiser tous coté serveur dans RMI?

    Merci et joyeuses fêtes

Discussions similaires

  1. Exécuter un fichier .class sur une machine distante
    Par ushref dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 24/03/2009, 19h11
  2. exécuter un .class sur une machine distante: des propositions?
    Par abir_rzg dans le forum Développement
    Réponses: 0
    Dernier message: 17/02/2009, 21h37
  3. java sur une machine dote du se solaris 10
    Par kouadio2richard dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 19/11/2008, 18h14
  4. Réponses: 1
    Dernier message: 01/02/2007, 12h51
  5. Lenteur Java sur UNE machine
    Par leminipouce dans le forum Général Java
    Réponses: 14
    Dernier message: 19/05/2006, 12h00

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