# Umfangreiche Batch Datei (Rmiregistry prüfung + Prog. start)



## Bene (19. Dez 2006)

Hallo Zusammen, 

ich möchte mir  gerne eine Batch Datei erstellen, die folgende Funktionen aufweist:

1. Starten der Rmiregistry - (klar) 
2. Vor dem Starten der Rmiregistry prüfen ob diese breits läuft und Rmiregistry "restart" machen.
3. Hier eine kurze Pause, damit die Registry in Ruhe Starten kann.
4. Starten eines Java Programms - (klar)

5. Das ganze in eine Schleife packen - Damit soll erreicht werden, das über "Strg + c" einen vollständiger Neustart des Programms erreicht werden kann. Also die Punkte 1-4 wiederholt werden. 

Der Bisherige Ansatz: 

```
start C:\INSTALL\java\bin\rmiregistry                             (1.)
java -Xmx512m -Djava.class.path=./bin; MeineKlasse      (4.)
pause
```
----

Ich weis das es mit Shell Dateien kein Problem ist sowas zu realisieren - geht das aber auch mittels Batch? 

Grüße, 
Bene


----------



## L-ectron-X (19. Dez 2006)

Punkt 1 - 4 lassen sich direkt im Java-Programm implementieren.
Punkt 5 verstehe ich nicht so recht, wie das gemeint ist.


----------



## The_S (19. Dez 2006)

Wenn du in Windows cmd STRG+C drückst wird der aktuelle Prozess abgebrochen. Bene möchte damit erreichen, dass beim Abbrechen des Prozess selbiger einfach neugestartet wird.

Das lässt sich ebenfalls direkt in Jva realisieren


----------



## Bene (19. Dez 2006)

Hey ihr beiden.

Eventuell ließe sich das in Java realisieren, aber: 

1. Wie kann ich die Rmiregistry aus Java heraus Starten / überprüfen und Neustarten?

2. Gedacht is das ganze als Hard-Reset - sprich wenn die Java Anwendung nicht mehr reagiert, was dann? 

Mit meiner Batch Datei funktioniert das jetzt so (WinXP):


```
:anfang

tskill rmiregistry

start C:\INSTALL\jdk5\bin\rmiregistry

java -Xmx512m -Djava.class.path=./bin; RmiServerClass

goto anfang
```


----------



## L-ectron-X (19. Dez 2006)

```
private Registry registry;

//RMI-Registry starten
try {         
   LocateRegistry.createRegistry(Registry.REGISTRY_PORT); //Starte Registry an Standard-RMI-Port
   registry = LocateRegistry.getRegistry();  //Registry für Zugriff referenzieren
}
catch(ExportException ee) {
   JOptionPane.showMessageDialog(null,
         "Der Standard-Port 1099 für RMI-Anwendungen wurde bereits von einer anderen Anwendung belegt!",
         "java.net.BindException",
         JOptionPane.ERROR_MESSAGE);
         
   ee.printStackTrace();
}
```

Das Schöne daran: Beendest du das Programm, wird auch die RMI-Registry beendet, weil die ja auch _nur_ ein Java-Programm ist.


----------

