JBoss AS Server Ports ändern

Es besteht tatsächlich manchmal der Bedarf die Default Server Ports des JBoss Application Servers (AS) zu ändern. Nachdem man, so wie ich, an den verschiedensten Stellen versucht hat einen Port zu ändern und außer Exceptions nichts bei herausgekommen ist entpuppt sich die richtige Lösung doch als sehr einfach und sollte daher kurz notiert werden.

Grundsätzlich wird von JBoss darauf verwiesen, dass eine einzige JBoss Server Installation mehrere Instanzen verwalten kann. Das geschieht durch die verschiedenen Server Konfigurationsverzeichnisse:

In meinem speziellem Fall war es dennoch nicht anders zu lösen als eine komplette neue JBoss Installation in einem anderen Verzeichnis. Das Ergebnis war natürlich, dass die beiden JBoss AS Installationen Portkonflikte anzeigten und der zuletzt gestartet JBoss AS nur Exceptions ausspuckte.

Es bestehen für dieses Problem zwei Lösungen: Entweder man vergibt jedem JBoss eine eigene IP Adresse (./run.sh -b 192.168.1.2) und somit sind die Port Bindings auch voneinander getrennt oder man vergibt jeder JBoss AS Instanz unterschiedliche Ports.
In meinem Fall war die zweite Lösung, verschieden Ports vergeben, die einzige Möglichkeit die zwei JBoss AS Instanzen auf der gleichen Maschine voneinander zu trennen.

Verschiedene Ports für jede JBoss AS Instanz vergeben

Verschiedene Ports zu vergeben gestaltet sich im JBoss AS recht einfach. Man kann natürlich alle Ports in jeder einzelnen Konfigurationsdatei manuell von Hand ändern und hoffen, dass man alles richtig gemacht hat.
Viel empfehlenswerter ist allerdings die Verwendung des Service Binding Manager. Mit diesem ist es möglich weitreichende Änderungen an den einzelnen Konfigurationsdateien Ports zu verändern. In der Default Konfiguration des JBoss AS ist dieser Service Binding Manager nicht aktiv (in den Kommentar eingeschlossen) und es werden die vorgegebenen Ports verwendet.

Um den Service Binding Manager zu verwenden muss die entsprechende Stelle in der jboss-service.xml auskommentiert werden. Die jboss-service.xml befindet sich im conf Verzeichnisses unterhalb eines Server Konfigurationsverzeichnisses. Für den Default Server somit unter jboss-4.2.2.GA\server\default\conf.

Darin die folgenden Zeilen auskommentieren.

  
    ports-01
    ${jboss.home.url}/docs/examples/binding-manager/sample-bindings.xml
    org.jboss.services.binding.XMLServicesStoreFactory

In der spample-bindings.xml Datei sind sämtliche in JBoss konfigurierbare Ports aufgelistet und können nach belieben verändert werden bzw. dieses spample-bindings.xml kann schon verwendet werden um den JBoss AS auf komplett anderen Ports laufen zu lassen.
So wird z.B. auch der HTTP Port in dieser Beispielkonfiguration auf 8180 (default ist 8080) konfiguriert:


  
    ...
    
    
      
      
    
    ...
  

Für eine genauere Dokumentation der XML Datei und der einzelnen XML Elemente sei auf den Server Configuration Guide Kapitel 10.2 verwiesen.

Insgesamt eine schöne und saubere Möglichkeit Port Bindings zu konfigurieren und wiederzuverwenden.
Für weiterführende Dokumentation rund um die Konfiguration der Ports und einzelner JBoss AS Instanzen empfehle ich das JBoss Wiki:

Tags: , ,

Wenn du Fragen oder Anregungen zum Post hast, dann hinterlasse doch einen Kommentar oder wenn du weiterhin Artikel von Javathreads lesen möchtest, dann abonniere den RSS Feed und sehe direkt in deinem Feed Reader die nächsten Artikel.

Ähnliche Artikel, die dich interessieren könnten:
Kommentare

Wie sieht es bei der 6er Version aus?

Per Google gefunden und genau was ich gesucht habe! Erspart einem das Bearbeiten von mehreren XMLs und erlaubt schnelles umschalten auf andere Ports. Danke!

@Timo: bei JBoss 6 hat sich die Datei mit den Konfigurationsdaten verschoben. Die Konfigurationsdatei liegt nun in “conf\bindingservice.beans\META-INF” und heißt “bindings-jboss-beans.xml”. Es bestehen drei weitere vordefinierte Port-Bindings.
Einfach den Server mit “-Djboss.service.binding.set=ports-01″ (oder ports-02 bzw. ports-03) starten. Anschließend ist der Server unter 8180 (oder 8280 bzw. 8380) ansprechbar.

@Chris: so soll es sein! =)

Hinterlasse einen Kommentar