# auf RemotPC eine Applikation starten



## rtt (16. Nov 2004)

Hallo,
ich möchte von meinem Server Programm eine Applikation auf einem anderen Rechner im Netzwerk starten, bsp. eine Batch-Datei. Das Aufrufen von Applikationen ist an sich kein Problem, nur sollen die Programme auf dem Remote PC laufen bzw. gestartet werden.

Hat jemand eine Idee, wie man so was macht?


Hier mal der Teil zum Aufrufen von Programmen auf lokalem Rechner:

```
try { 
	Runtime.getRuntime().exec("c:\\windows\\notepad.exe"); 
	Runtime.getRuntime().exec("z:\\data\\test.bat");				
} 
catch (Exception rune) {System.out.println(rune);}
```

Danke 
Gruß Robin


----------



## Grizzly (16. Nov 2004)

Wenn Du auf dem Rechner auch ein Java Programm laufen hast, könntest Du zu dem eine Netzwerkverbindung aufbauen und es damit beauftragen das entsprechende Programm zu starten.

Runtime.getRuntime().exec(String) kann nur lokale Programme starten.


----------



## rtt (16. Nov 2004)

reicht es da, wenn beispielsweise nur eine Klasse auf dem Remote PC liegt, die ich anspreche? Oder muß ich da eine eigene Applikation schreiben?

Gibt es noch andere Möglichkeiten?
Was ist mit RMI? Kann man da nicht auf Programmteile auf anderen Rechner zugreifen?

Gruß
Robin


----------



## Bleiglanz (16. Nov 2004)

RMI CORBA COM+ Webservices

alles Techniken für RPC (remote procedure call)

=> auf dem Zielrechner muss in jedem Fall eine entsprechende Infrastruktur vorhanden sein

für deine Zwecke (Java?) ist wohl RMI am einfachsten (als Methodenrumpf im RMI-skeleton dann einfach dein exec() loslassen)



> reicht es da, wenn beispielsweise nur eine Klasse auf dem Remote PC liegt, die ich anspreche?


was heisst liegen? es muss natürlich ein Netzwerk-Server her, der auf einem entsprechenden Port die RPC calls entgegennimmt.


----------



## rtt (16. Nov 2004)

welche Methode ist am einfachsten zu realisieren? Welche ist am sinnvollsten? Die Methode von Grizzly oder die von Bleiglanz?

Gruß Robin


----------



## Bleiglanz (16. Nov 2004)

die Frage ist was Grizzly meint?

auf dem "Zielrechner" einen ServerSocket als Daemon laufen lassen , der eingehende Kommandos (Strings? oder was??) übersetzt und damit irgendetwas macht?

Übrigens ist RMI nur eine technisch verfeinerte Umsetzungs dieses Prinzips (es macht gleich ganze Objekte "transparent")

wenns sehr einfach gehalten ist, ist das besser und einfacher als gleich RMI zu verwenden 

wenn du aber viele verschiedene Methoden hast und komplizierte Parameter übertragen musst, nimm RMI


----------



## rtt (16. Nov 2004)

ich denke mal, das ich RMI verwenden werde, da das ganze später sicherlich noch ausgebaut wird.

Kennst du eine gute und leicht verständliche Einführung in das Thema? vielleicht einen Link oder so.

Besten Dank
Robin


----------



## Grizzly (16. Nov 2004)

Bleiglanz hat gesagt.:
			
		

> die Frage ist was Grizzly meint?[...]



Ich meinte das mal ganz allgemein.



			
				Bleiglanz hat gesagt.:
			
		

> [...]wenns sehr einfach gehalten ist, ist das besser und einfacher als gleich RMI zu verwenden [...]



Würde ich auch empfehlen.



			
				rtt hat gesagt.:
			
		

> [...]Kennst du eine gute und leicht verständliche Einführung in das Thema? vielleicht einen Link oder so.[...]



Bei Sun gibt es ein Tutorial Getting Started Using RMI. Ansonsten schau mal in das Kapitel 18 Verteilte Programmierung mit RMI und SOAP von _Java ist auch eine Insel_.


----------



## rtt (16. Nov 2004)

Besten Dank Jungs.
Gruß Robin


----------



## Azubili (6. Feb 2006)

Ich habe so ein ähnliches Problem, 

geht das auch wenn der Server das BS Linux hat und der Client-Rechner Windows?

Wollte dafür nicht extra ein thema aufmachen


----------



## Ilja (6. Feb 2006)

Java ist platformunabhängig 

wenn du das mit RMI realisieren willst, dann müsstest du natürlich wissen, was für ein BS auf dem Server läuft... wegen .exec("C:\...") bzw. .exec("/user/...")


----------

