Multi-Server Architektur im AS (JBOSS/Glassfish) realisieren

ReaperXmac

Neues Mitglied
Moin,

Ich stecke grad eher noch in der Anfangsphase meines Projektes. Server-Architektur ist folgende:

Remote Server (in einem Rechenzentrum) - Lokaler Server (vor Ort auf einem Rechner) - Client

beide laufen in der Regel auf getrennten Systemen, jedoch ist es erforderlich für die Entwicklung dass ich alle lokal laufen habe. Zusätzlich benutzen beide Server eine gemeinsame lib (jar).
Aktuell hab ich Glassfish 3.1.2 dafür laufen wo jeder Server ein EAR darstellt. Deployen lässt es sich, jedoch hab ich schon Probleme, das jede EAR in sein eigenes logfile schreiben soll (benutze Log4J).

Das klappt für das SessionBean (mit @Startup Annotation) was den DOMConfigurator aufruft gut, aber andere SessionBeans benutzen die globale Log4J config. Durch die gemeinsame jar-lib kann ich im globalen Log4J auch kein Paketgefiltertes Logging einsetzen.

Ist die Frage, mach ich da einen Denkfehler und die Server sollten in eigene AS Instanzen/domains gepackt werden, oder lässt sich da bei Log4J noch was drehen in Richtung Deployment-bezogene Log4J Konfiguration?

Hoffe es ist einigermaßen klar, was ich meine 🙂

Ich habe mich auch auf Glassfish bisher nicht festgelegt. aktuell schaue ich mir JBoss 7.1 an.

Gruß

Sebastian
 
Ich kenne Glassfish nicht besonders gut, aber JBoss und habe schon viel Erfahrung mit abgefahrenen Enterprise Infrastrukturen.

Logging ist in Applicationservern schon sehr speziell. Du solltest auf jeden Fall vermeiden eigenes Logging "programmatisch" zu konfigurieren (z.B. mit deinem Trick über ein Singleton Bean und dem DOMConfigurator). Nutze für Logging die Möglichkeiten, die dir der Applicationserver anbietet. Alles andere ist über keine Spec und keinen Standard abgesichert und kann (und wird z.B. bei Migrationen) immer wieder Probleme machen.

JBoss nutzt seit JBoss 6 (oder 5?) einen Logging-Service der verschiedene Logging APIs abstrahiert und konfigurierbar macht. Mittlerweile sogar Logging per Application, was lange Zeit vorher nicht sinnvoll (oder nicht einfach) möglich war. Logging über Konfiguration sollte hier absolut ausreichend sein.

Allgemein zu deinem Vorhaben:
Auch wenn die Zielplattform so aufwendig ist, sollte deine Testumgebung es nicht sein (müssen). Bestenfalls eine Umgebung für automatisierte Integrationstests oder für die QS, auf keinen Fall zur Entwicklungszeit. Das ist eine Wartungshölle und eine absolute Zeitfalle in jeder Hinsicht.

Baue so eine Umgebung mit (virtuellen) Servern auf und nutze CI und dazu passende Tests um Sonderfälle bzgl. dieser Infrastruktur abzucheken. Benutze als Entwickler vorwiegend nur Unit-Tests und eine passende Umgebung (z.B. für JBoss Arquillian) oder eben einen lokalen Applicationserver (aber eben nur einen!).

Stecke viel Aufwand in Automatisierung, sowohl Tests als auch Installation, Deplyoment, Integrationstests, Release, ...
 
Danke für die Antwort. Ja das mit dem Automatisierten Testen klingt vernünftig. Werde mir das Arquillian bei Zeiten ansehen.
Ich hab erstmal damit gekämpft, von NetBeans auf Eclipse zu migrieren, da NetBeans JBoss Support für die aktuelle 7.1 quasi nicht vorhanden ist. War alles andere als leicht, da ich zumindest ein J2EE neuling bin 🙂. Habe mich nun daraus hergehend auch für JBoss entschieden. Die 2 Server Ears laufen nun parallel und reden auch mit einander 🙂

Das Logging hab ich erstmal über den JBoss eigenen Logger abgewickelt und benutze auch aktuell die JBoss std Konfiguration. Ich schau mir später noch einmal an die Appender zu konfigurieren. Das ist erstmal net soo wichtig jetzt, da ich ja anders als bei Glassfish ne Konsole mit den Ausgaben habe.
 

Zurück
Oben