« Besprechungsprotokol... | Main | BPM Lösung für Glass... »

Manuelle Installation von Liferay in Glassfish unter Windows

Wir benutzen und bevorzugen den Glassfish schon sehr lange als Applikationsserver, sowohl bei unseren Kunden als auch für interne Projekte. Unser Workflow (www.imixs.org) war schon sehr früh (ich glaube unter den ersten 50) im Aquarium bei damals noch SUN aufgeführt. Er ist zuverlässig, relativ bug frei und meist im JEE Umfeld vorne dran, ist halt die Referenz Implementierung. Da wir derzeit sehr hart an einer Einbindung unseres Imixs Workflows in Liferay arbeiten, lag es nahe, Liferay auch unter Glassfish zum Laufen zu bringen. Die folgenden Beschreibungen sind mit den Bausteinen

  • Liferay 5.2.3
  • Glassfish  V2.1.1. final
  • mySQL 5.1

gemacht, aber es geht auch mit Versionsnummern höher oder tiefer recht ähnlich. Bei manchen Releases muss man dann schon ab und an lang suchen und tricksen, aber letztendlich bringt man es nach ein paar Tagen zum Fliegen. Leider haben wir in Folge unserer Bemühungen festgestellt, dass die Dokumentation von Liferay grade an den kitzligen Stellen manchmal recht dünn oder gar nicht vorhanden ist. Nicht dass hier der falsche Eindruck entsteht: Das Projekt ist gut dokumentiert! Man bekommt recht schnell Antwort im Forum! Aber es schleicht sich so der kleine Gedanke durch, dass wenn man wirklich an Projekte geht, die nicht nur um Chat oder Anzeige von statischen Portlets etc geht, man als nicht Hardcore-Selbst-Code-Builder da recht alleine steht und wohl die kommerzielle Variante wählt. Vor Allem, wenn die Kernkompetenz nicht in der IT liegt. Das bekannte Dilemma Open Source - Dual Licensing. Aber genug philosophiert, auf zur Installation. Nach ein paar Durchläufen bekommt man das Ganze in 15 Minuten hin, das meiste geht auf Windows typische Sicherheitsdurchstarter, unter Debian ists schöner, halt weniger bunt.

Ich setze installierten und laufenden Glassfish und MySQL sowie das JDK 1.6.x (obwohl in dieser Konstellation auch 1.5.x gehen würde) voraus. Ein gscheiter Editor ist auch recht nützlich, ich bevorzuge unter Windows den Notepad++. Unter www.liferay.com kann man die folgenden benötigten Bestandteile herunter laden:

  •  liferay-portal-5.2.3.war (das eigenliche Portal)
  • liferay-portal-dependencies-5.2.3.zip (jar Files vom Portal, die der Glassfish im lib Ordern braucht)
  • liferay-portal-sql-5.2.3.zip (Treiber und Scripte für die SQL Datenbanken)
  • liferay-portal-ext-5.2.3.zip (n Haufen von Datein und Treiber, wird machnmal auch Develloper Kit genannt)

Unter Downloads auf den kleinen unscheinbaren Link "Visit SourceForge.net to view all files" gehen und dort dann den Knopf "View all files" klicken. Die "Liferay Plugins" zuklicken und dafür "Liferay Portal /5.2.3" aufklicken.

Man kann liferay auch unter die Standard domaine domain1 installieren (so wie in jeder andere vorhandene domain auch), ich beschreibe es hier mit der Anlage einer neuen Domain. Ist für das erste Probieren und Reinschmecken imo am besten.

Dazu ruft man in der Konsole von Windows im Verzeichnis bin des installierten Galssfishs folgenden asadmin Befehl auf:

 C:\glassfish211\bin> asadmin create-domain --adminport 24848 --instanceport 28080 wubbelsportal

Dann wird man gefragt, wie der Adminuser heissen soll, dess Passwort und das Masterpasswort. Fertig, Domain angelegt!

Nun legen wir die MySQl Datenbank an und bereiten sie für liferay vor. Ich benutze dabei sowohl den MySql Administrator als auch die Konsole. Hier soll es mal nur mit dem ("deutschen") Administrator beschireben werden, die Konsolenbefehle sind im Netz gut dokumentiert.Also den MySQL Administrator aufrufen und in der rechten Administration auf "Kataloge" gehen (sinnvolle Übersetzung*g*). In dem unteren Naviagtionsbereich dann mit rechter Maustaste klicken und "neues Schema" auswählen. Im Popup den Namen angeben, z.B. wubbelsportal.

Einen User brauchen wir ebenfalls noch. Im MySQL Administrator dazu auf Benutzerverwaltung klicken und unten rechts den Knopf "Neuen Nutzer anlegen" drücken. Namen und Passwort eingeben und mit "Anwenden" bestätigen.

Der User benötigt die Rechte  an unserer gerade angelegten Datenbank. Dazu geht man im MySQL Administrator unter "Benutzerverwaltun" im rechten Fenster auf "Schema-Berechtigung" und wählt die angelegte Datenbank aus. Man sieht in dem rechtesten Fenster alle möglichen Funktionen. Wir wählen alle aus, in dem wir auf den "Doppelpfeil links" klicken und dies mit "Anwenden" bestätigen.

Es wird in dem Adminhandbuch von liferay beschrieben, dass man für die MySQL-Datenbank entweder das Script create-mysql.sql oder create-minimal-mysql.sql ausführen soll. Ich habe dies jedesmal gemacht, beim deployen allerdings kommt es mir so vor, als ob dies dann nochmals geschieht. Ich habe es noch nicht ohne dem Ausführen des Scriptes versucht, werde es aber einmal probieren und dann darüber berichten.

Wenn wir eine Datenbank mit einem anderen Namen als lportal angelegt haben, müssen wir zunächst das script create-minimal-mysql.sql mit dem Notepad++ öffnen und in den ersten drei Zeilen das wort "lportal" mit dem Namen unserer Datebank ersetzen.

Das Script führe ich immer über die MySQL Konsole aus. Dazu rufe ich im MySQL Administrator über Extras den MySQL-Befehlszeilen-Client (herrliche Übersetzung) auf. Dort gebe ich folgendes ein:

source C:\\liferay\\ create-minimal-mysql.sql

Dabei ist zu beachten, dass bei Windows die \ auskommentiert werden müssen. Das macht man mit einem weiteren \. Also beim Pfad, wo das create-minmal-mysql.sql liegt, immer zwei \ schreiben, ansonsten klappt das nicht.

Nun kommt der etwas "schwammige" Teil. Damit Liferay unter Glassfish läuft, müssen gewisse jar-files aus den heruntergeladenen zip-Dateien in das lib Verzeichnis der entsprechenden Glassfihdomaine, in der liferay deployed werden soll, kopiert werden, also z.B.

C:\glassfish211\domains\wubbelsportal\lib

Es gibt unterschiedliche Anweisungen, welche alle das sein sollen, die unten aufgeführten haben bei uns funktioniert. Das kann sich aber bei den verschiedenen Releasekombinationen ändern. Die hier angeführen führen zumindest bei liferay 5.x zu Erfolg:

Aus dem Paket liferay-dependencies-5.2.3.zip (alle)

  • annotations.jar
  • container.jar
  • hsql.jar (eigenltich nicht nötig, da wir ja MySQL verwenden)
  • portal-kernel.jar
  • portal-service.jar
  • portlet.jar
  • portlet-container.jar
  • saw-api-jar

Aus dem Paket liferay-portal-ext-5.2.3.zip

  • xercesImpl.jar

Einige Beiträge reden von mehr jar-files, allerdings ist diese Datei bei uns bis dato ausreichend.

Im Glassfish müssen noch einige Einstellungen gemacht werden, bevor wir liferay deployen können. Dazu starten wir den Glassfish und gehen in die Webadminkonsole, in unserem Beispiel

http://localhost:24848

Zunächst stellen wir ein paar Änderungen an der JVM ein. Auf Application Server in der linken Nachigation klicken und im Mainframe "JVM Settings/JVM Options" auswählen. Dort zunächst die neue Option

-Dcom.sun.enterprise.server.ss.ASQuickStartup=false

einfügen. Dazu auf "Add JVM Option" klicken und das Obige in die neue leere Zeile eingeben. Dann noch laut Administrationshandbuch von liferay die folgenden beiden Parameter ändern:

-XX:MaxPermSize=256m
-Xmx1024m

Ich denke, es geht auch ohne diese beiden Parameter, das Deployen wird aber dadurch schneller. Die Änderungen erfordern einen Neustart des Glassfishs. Zuvor legen wir aber noch den Zugriff auf MySQL an. Dazu in der linken Navigation "Resources/JDBC/Connection Pools" auswählen. Dort dann auf "New..." klicken und den Namen eingeben (wubbelpool), den Resoucre Type (javax.sql.DataSource) und den Database Ven dor (MySQL) auswählen.Anschliessend auf "Next" klicken und ganz unten die Additional Properties ausfüllen:

databaseName                                    wubbelsportal
portNumber                                      3306
serverName                                      localhost
password                                        meinPasswort
user                                            wubbel

Danach auf "Fertig" drücken. Wenn es geklappt hat (grünes Ausrufezeichen erscheint) kann man die Resource pingen. Wenn eine Fehlermedlung kommt, in der Callspath von mysql nicht gefunden wird, dann den entsprechenden Treiber in das lib/ext Verzeichnis der Domain kopieren, z.B.

C:\glassfish211\domains\flos\lib\ext

Nun noch die JDBC Resource angelegt, unter "Resources/JDBC/JDBC Resources" auf "New..." klicken, den JINDI Name

jdbc/LiferayPool

angeben und den eben angelegten Connection Pool auswählen "Ok" drücken und fertig!

Danach den Server neu starten, am besten über die Konsole mit

asadmin stop-domain wubbelsportal
asadmin start-domain wubbelsportal

da ich öfters feststellen musste, dass die bei Windows in dem Domainenordner bin installierten Start- und Stopscripte nicht immer den Server auch wirklich runterfahren.

Nun kann das Portal deployed werden. Wir haben anfangs immer die Webaminkonsole genommen, so wie wir unsere Applikationen auch deployen. Bei liferay schlug das immer fehl, ohne allerdings wirklich eine Fehlermeldung zu produzieren. Es deployte sehr schnell und gab eine Erfolgsmeldung zurück. Beim Aufrufen von liferay alleredings kam immer eine Fehlermeldung, die sich aber auch im Logfile nicht wirklich entschlüsseln lies. Erst als wir über asadmin deployt haben, hatten wir Erfolg. Dazu in den Ordner gehen, in dem das liferay war file leigt und dort das Folgende eingeben:

 c:\glassfish211\bin\asadmin deploy --host localhost --port 24848 --user admin --contextroot / precompilejsp=true --verify=false --name "Wubbels Portal" --enabled=true liferay-portal-5.2.3.war

wobei c:\glassfish211 das Verzeichnis ist, wo der Glassfishserver installiert ist. Man kann statt admin auch einen eigenen User verwenden, der entsprechende Rechte besitzt. Bei meinem betagten Laptop dauert das Deployen so ca. eine halbe Stunde. Aktuelle Hardware und Debian als Betriebssystem beschleunigen das erheblich.

Wenn liferay erfolgreich deployt wurde, müssen wir ihm nur noch erzählen, dass er MySQL als Speichermedium nutzen soll. Dazu erstellen wir im Verzeichnis

C:\glassfish211\domains\wubbelsportal\applications\j2ee-modules\Liferay-Portal-5.2.3\WEB-INF\classes 

die Datei portal-ext.properties. In diese schreiben wir

jdbc.default.jndi.name=jdbc/LiferayPool

Dann den Glassfish nochmal durchstarten und dann das Portal aufrufen:

http://localhost:28080

Einloggen mit

test@liferay.com
test

und das Neue erforschen!

Warum machen wir das eigentlich? Wir haben herausgefunden, dass Liferay und Imixs Workflow sich wunderbar ergänzen. Mit dem Imixs Workflow erweitern wir die Möglichkeiten in Hinsicht auf Human based Workflow immens. Die implementierten Funktionalitäten im Imixs Workflow, v.a. Compliance Features wie automatische Historisierung, Rechtevergabe, Aufgaben- und Statusliste oder Emailbenachrichtigung / -eskalation, bringen die Möglichkeit, liferay zu weit mehr als ein Informationsportal zu bringen. Ob Urlaubsantrag, Reklamationsworkflow, Quality Assurance oder fortlaufende Protokolle, all dies kann zentral für die Anwender in Liferay zusammen gefasst werden. Als erstes sollen unsere beiden Online Plattformen

www.ShareYourWork.org

und

www.meineProtokolle.de

mit Schnittstellen zu Liferay erweitert werden. Wir werden diese beispielhaft auf unseren Servern offen für jeden zeigen.

Und nun viel Spass mit dem Ausprobieren!