# JBoss aus einem Java-Programm starten



## Guest (9. Jul 2007)

Hallo,
ich möchte aus einem Java-Programm einen JBoss-Server (neu-)starten bzw. beenden. Ich kenne mich da aber leider nicht so besonders gut aus. Wie geht denn sowas?

mfg


----------



## Gast (10. Jul 2007)

Ich habe es schon mit

```
String cmd = "c:\\programme\\jboss-4.2.0.GA\\bin\\run.bat";
Runtime.getRuntime().exec(cmd);
```
Das funktioniert aber nicht. Wenn ich aber "c:\\programme\\jboss-4.2.0.GA\\bin\\run.bat" in der Eingabeaufforderung eingebe, startet JBoss.


----------



## Ullenboom (10. Jul 2007)

Hallo,

schaue dir am Besten an, was run.bat genau macht. Hier wird die JVM aufgerufen und Argumente übergeben.

"%JAVA%" %JAVA_OPTS% "-Djava.endorsed.dirs=%JBOSS_ENDORSED_DIRS%" -classpath "%JBOSS_CLASSPATH%" org.jboss.Main %*

Also musst du org.jboss.Main starten, die richtigen Jars im Klassenpfad angeben und die passenden Properties gesetzt haben.

Grüße

 Christian | tutego


----------



## Gast (10. Jul 2007)

Ullenboom hat gesagt.:
			
		

> Also musst du org.jboss.Main starten, die richtigen Jars im Klassenpfad angeben und die passenden Properties gesetzt haben.



JBoss startet ja, aber nur wenn ich über Windows die Bat-Datei starte. Über ein Java-Programm (s.o.) funktioniert es nicht.


----------



## Ullenboom (10. Jul 2007)

??

Du schreibt also 

class MyStarter {
 public static main( String... args ) throws Exception
 {
   String[] myArgs = ...
   org.jboss.Main.main(myArgs);
 }
}

mit "allen" angegeben Parameter und Properties und das funktioniert nicht?

Christian | tutego


----------



## Guest (10. Jul 2007)

Ich weiß ehrlich gesagt nicht, was du meinst.  ???:L 
Ich habe JBoss nur irgendwo auf der Festplatte liegen. Das einzige, was ich kenne, ist der Pfad zur run.bat/shutdown.bat.


----------



## Ullenboom (10. Jul 2007)

Nun, eigentlich ist schon alles gesagt: Du startet das nicht über exec() sondern über die Klasse, die auch run.bat eigentlich aufruft. run.bat macht doch nichts anderes als die JVM aufzurufen, denn org.jboss.Main hat eine main-Funktion wie alle anderen startbaren Java-Programme. Die ruft du nun direkt auf.

 Christian


----------



## Guest (10. Jul 2007)

Wie muss denn das Kommando aussehen?


```
java org.jboss.Main "C:/Programme/Java/jdk1.5.0_12/bin" "..." "..."
```
 ?


----------



## Ullenboom (10. Jul 2007)

Warum so? Bitte schau dir das Beispiel von mir an:

class MyStarter {
public static main( String... args ) throws Exception
{
String[] myArgs = ...
org.jboss.Main.main(myArgs);
}
} 

Eine *eigene* Klasse mit einer Delegation an JBoss's main().


----------



## Guest (10. Jul 2007)

So?

```
class MyStarter {

	public static void main(String... args) throws Exception {

		String[] myArgs = { "JAVA_HOME=C:/Programme/Java/jdk1.5.0_12/bin", "JBOSS_HOME=C:/Programme/jboss4.2.0.AG/bin",
				"CLASSPATH=C:/Programme/Java/jdk1.5.0_12/lib/tools.jar;C:/Programme/jboss-4.2.0.GA/bin/run.jar",
				"JAVA_OPTS=-Dprogram.name=run.bat -server -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000" };

		org.jboss.Main.main(myArgs);

	}

}
```

JBoss startet, beschwert sich aber mit "jboss: unused non-option argument: JAVA_HOME=C:/Programme/Java/jdk1.5.0_12/bin" usw.


----------



## Ullenboom (10. Jul 2007)

Warum so? Das sind Optionen, die man über System.setProperty() setzt. 

%JAVA%" %JAVA_OPTS% "-Djava.endorsed.dirs=%JBOSS_ENDORSED_DIRS%" -classpath %JBOSS_CLASSPATH%" org.jboss.Main %*

Nur der Inhalt von %* muss in die args.


----------



## Gast (10. Jul 2007)

Und was ist der Inhalt von %*?
Mit einem leeren Array bibts es keine derartigen Meldungen.

Wie hilft das denn jetzt JBoss aus der Java-Anwendung zu starten? Ich habe jetzt doch die run.jar im Buildpath. Das wird wohl kaum noch funktionieren, wenn ich das Programm in eine jar-Datei exportiert habe.


----------

