2011-09-26 2 views
0

Je veux exécuter un programme sur une machine Windows à partir d'un programme Java qui s'exécute sur un serveur Java dans une autre machine Windows et retourner quelque chose à partir de cet exécutable.Comment exécuter un exécutable Windows à distance à partir d'un serveur Java?

Bien que je recherche différentes façons de le faire, je ne trouve pas d'approche populaire.

Qu'est-ce qui serait un moyen rapide mais standard d'effectuer cet appel réparti?

(RPC, CORBA, Sockets ??)

Merci

+0

Ils sont tous corrects, ils sont tous populaires, ils ont chacun leurs propres avantages. –

Répondre

0

Si les deux machines fonctionnent dans un environnement de réseau local de confiance, puis prises devraient faire l'affaire. Java a des classes de sockets très pratiques intégrées donc il sera très simple à implémenter.

Sur l'exécuteur, vous devrez créer un ServerSocket. Ensuite, dans une boucle, accept() un socket de connexion, exécutez votre programme, écrire des données dans le flux de sortie du socket et le fermer. Sur le côté connexion, vous allez simplement créer un new Socket, lire les données du flux d'entrée du socket et le fermer.

Si vous souhaitez traiter simultanément plusieurs demandes, c'est un peu moins simple mais tout de même assez facile si vous savez programmer les threads.

+0

Le serveur distant n'a pas de jvm et par conséquent je ne peux pas exécuter un programme java qui crée un ServerSocket etc. – Jaizen

+0

L'écriture du serveur en C ou C# (si .NET est installé) n'est pas beaucoup plus difficile. Si vous êtes autorisé à installer votre petit serveur, alors pourquoi ne pas installer une JVM? – mpartel

0

Ok, si vous ne pouvez pas exécuter Java sur l'autre ordinateur, j'appellerais localement une application .NET qui effectue le RPC vers une autre application .NET sur l'autre machine. Dans ce cas, vous pouvez utiliser .NET Remoting ou WCF (ou DCOM si vous y êtes obligé). Comme autre option, vous pouvez vous en tenir à Sockets à la fois côté Java et côté .NET. (Je suis sûr que .NET a également une implémentation Socket)

Questions connexes