IBM WebSphere Application Server Community Edition 2.0 auf Fedora 8

Der WebSphere Application Server Community Edition basiert auf der Apache Geronimo Technologie und benutzt folgende Open Source Software Komponenten:
  • Apache Tomcat für Servlets and JavaServer Pages (JSP)
  • Apache MyFaces für Java Server Faces (JSF)
  • Apache OpenEJB für die Unterstützung von Enterprise JavaBeans (EJB)
  • Apache Open JPA für die Unterstützung der Java Persistence API (JPA)
  • Apache Axis/Axis2 für die Unterstützung von Web services
  • Apache ActiveMQ für Java Message Service (JMS)
  • TranQL für die Unterstützung von Java Database Connectivity (JDBC)
  • HOWL (ObjectWeb) die Unterstützung der Java Transaction API (JTA)
  • Apache Yoko die Unterstützung von JDK independent ORB
WAS CE unterstützt den vollen Java EE 5 Standard und ermöglicht eine einfache Entwicklung von J2EE Applikationen. Die Version 2.0 ist seit September 2007 unter IBM WAS CE 2.0 Download kostenlos zum Download erhältlich.

      WAS CE Technology - Picture property by IBM

Installation:

Unter Fedora 8 sollte man nicht die mit der Distribution ausgelieferte, freie Java-Implementierung IcedTea verwenden, sondern den WAS CE mit der IBM SDK 5 herunterladen. Nach dem Download das Paket zuerst mit tar entpacken und danach das Java RPM-Paket installieren. Falls dabei die Meldung Install libXp.so.6 is needed by ibm-java2-i386-sdk-5.0-5.0.i386 erscheint, kann einfach per yum install libXp die fehlende libXp nachinstalliert werden.
    tar jxvf wasce_ibm150sdk_setup-2.0.0.0-ia32linux.tar.bz2
    rpm -ivh ibm-java2-i386-sdk-5.0-5.0.i386.rpm
Wird nun beim Starten des Installationsassistenten mit ./wasce_setup-2.0.0.0-unix.bin der Fehler java: xcb_xlib.c:50: xcb_xlib_unlock: Assertion `c->xlib.lock' failed ausgegeben, muss noch ein kleiner Workaround gemacht werden, da hier scheinbar ein Defect in der Verlinkung zur Xinerama-Extension vorliegt. Tritt also beim Starten des Installers der obenstehende Fehler auf, einfach den folgenden Befehl eingeben:
     sed -i 's/XINERAMA/FAKEEXTN/g' /opt/ibm/java2-i386-50/jre/bin/xawt/libmawt.so
Danach sollte der Installer ohne Probleme per ./wasce_setup-2.0.0.0-unix.bin initialisiert werden können. Danke an dieser Stelle an Josh Triplett auf bugs.sun.com!

Erste Schritte:

nach der Installation kann WAS CE mit dem Kommando
     /opt/IBM/WebSphere/AppServerCommunityEdition/bin/startup.sh
gestartet werden. Der Verlauf des Starts wird dabei nach /opt/IBM/WebSphere/AppServerCommunityEdition/var/log/geronimo.out protokolliert - dort sind dann auch alle Ports ersichtlich, die benutzt werden. Standardmässig kann danach die Administrationskonsole unter http://localhost:8080/console oder https://localhost:8443/console mit dem Usernamen system und dem Passwort manager erreicht werden.

mod_jk:

WAS CE richtet automatisch einen Tomcat AJP Connector ein, der auf Port 8009 hört. Somit muss nur noch ein bereits installierter Apache Web Server dazu gebracht werden, Requests an Geronimo weiterzugeben. Dazu muss mod_jk installiert werden. Das Vorgehen dazu ist relativ simpel - nur die folgenden Schritte sind nötig: Installation der Apache Devel-Pakete und Download des Sources der aktuellen mod_jk Version:
     yum install httpd-devel
     wget http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/tomcat-connectors-current-src.tar.gz
     tar zxvf tomcat-connectors-current-src.tar.gz
Danach ins richtige Verzeichnis des Sourcecodes wechseln und das Ganze kompilieren und installieren. Zum Zeitpunkt, als ich diese Anleitung schrieb, war die Version 1.2.25 aktuell:
     cd tomcat-connectors-1.2.25-src/native
     ./configure --with-apxs=/usr/sbin/apxs
     make && make install
Jetzt noch die benötigten Konfigurationen im Apachen einrichten: Zuerst das Laden des neu erzeugten Modules in der httpd.conf und danach die Erstellung eines geronimo.conf-Files für die eigentliche Konfiguration.
     vi /etc/httpd/conf/httpd.conf
        [snip...]
        LoadModule jk_module modules/mod_jk.so
        [/snip...]

     vi /etc/httpd/conf.d/geronimo.conf
       <IfModule mod_jk.c>
          JkWorkersFile /opt/IBM/WebSphere/AppServerCommunityEdition/var/config/workers.properties
          JkLogFile /opt/IBM/WebSphere/AppServerCommunityEdition/var/log/mod_jk.log
          JkLogLevel error
          JkMount /console/* geronimo_ajp13
       </IfModule>
In meiner Konfiguration werden also alle Requests, die an eine URL mit einem Kontext /console/ an den worker geronimo_ajp13 geleitet. Damit dies funktioniert, muss nun noch eine workers.properties erstellt werden:
      vi /opt/IBM/WebSphere/AppServerCommunityEdition/var/config/workers.properties
       worker.list=geronimo_ajp13
       worker.geronimo_ajp13.port=8009
       worker.geronimo_ajp13.host=localhost
       worker.geronimo_ajp13.type=ajp13
Jetzt einfach den Webserver mit
     service httpd restart
neu starten und die Konsole ist danach über den Webserver erreichbar. Die entsprechende URL für die Adminconsole wäre also in diesem Fallhttps://localhost:8443/console.

Um weitere Applikationen über den HTTP-Server erreichbar zu machen, können einfach die entsprechenden JkMount-Einträge in der geronimo.conf gemacht werden. Nicht vergessen, nach einer Änderung an diesem File den Webserver neu zu starten, um die Einträge zu aktivieren.