1 Jahr Liferay Portal Entwicklung

13 10 2007

Liferay LogoEs wird Zeit mal nach einem Jahr Liferay Entwicklung ein paar Erfahrungen wiederzugeben.

Als erstes muss man sagen: Es ist cool das man eine derartig umfangreiche Software als OpenSource vorfindet. Von Anfang an hat mich begeistert das es auch auf den Endanwender einen sehr positiven und Professionellen Eindruck macht. Bunt, massenweise Portlets, Drag & Drop, Viele Coole Effekte, man fühlt sich einfach wohl. Hier ist klar die GUI steht im Vordergrund (Da kenne ich andere OpenSource Software).

An diesem ersten Eindruck hat sich prinzipiell auch nach einem Jahr nichts geändert.

Der Erfahrungsbericht bezieht sich übrigens auf die 4.2.2 Version des Systems.

Um die nachfolgenden Bewertungen besser einordnen zu können ist der Kontext in dem wir Liferay einsetzten nicht uninteressant.

Wir entwickeln ein Internet Versicherungsportal (Portal, was für ein inflationärer Begriff im Heute) das zum einen technisch sehr modular aufgebaut sein soll da hier ein Fülle von Versicherungsprodukten angeboten wird, einen personalisierten „Self Service“ Bereich bietet, auf dem viele Contents zu finden sind, und zukünftig auch Extranet Funktionalitäten anbieten wird.

Die spannendste Aufgabe war jedoch die Integration eines Profilsystems das es ermöglicht individuelle Auftritte für eine Vielzahl unserer Kooperationen zur Verfügung zu stellen. Man muss sich vorstellen die haben derzeit schätzungsweise 20 „handgeschnitzte“ Webauftritte die unserer Versicherungen anbieten ,bei denen jedoch ca 95 % des Contents identisch ist. Das bedeutet derzeit einen hohen Wartungsaufwand, eine lange Vorlaufzeit für neue Kooperationen und eingeschränkte Flexibilität da die Inhalte statisch sind.

Das Konzept ist „Configuration by Exception“. Eine neue Betriebskrankenkasse möchte 2 Produkte von uns verkaufen – Wir legen nur noch fest „Welche Produkte“, „Welche Servicetelefonnummer“, „Logo der Kasse“ fertig. All dies über Admin Anwendungen konfigurierbar.

Dies macht klar welches Customizing wir an Liferay betrieben haben.

Aber genug zum Profilsystem des ging doch um Liferay und seinen ersten Eindruck!

Die Entwicklung mit Liferay

Wenn man versucht Liferay in diesem Umfang anzupassen kommt man nicht um die EXT Umgebung herum.
Die EXT Umgebung eine eine Erweiterungsumgebung für Liferay. Physikalisch gesehen ein eigenes Projekt was mit diversen ANT Files die Customizings mit der basis Liferay System Umgebung merged.

Die erste Frage die man sich bei der Begutachtung des erstellten „EXT“ Projektes stellt ist: „Wie bekomme ich das alles ins CVS?“.
Ja im EXT gibt es keine Trennung zwischen generierten und selbst erstellten Resourcen. So findet man auch mal eine angepasste „portal.properties“
im „classes“ Verzeichnis – alles wird gemischt :-( .

Wir haben uns Abhilfe mit einem weiteren „EXT“ Projekt geschafft. Hier ist nur enthalten was im CVS auch abgelegt wird. Dies wird dann bei jedem Build ins originale EXT kopiert und funktioniert ganz gut. Den gleichen Ansatz haben wir fürs „portal“ Projekt (Liferay Source Projekt) gewählt um Bugs am System zu fixen die auch an Liferay gemeldet wurden.

By the Way: Der präferierte Container für Liferay scheint Tomcat zu sein. Das haben wir gerade in der Anfangszeit zu spüren bekommen. Im Weblogic 8.1 ging erst mal nix. Nach einigem debuggen und einigen fixes gings dann jedoch. Mittlerweile sind wir auf WL 9.2. Man sollte sich im klaren sein das die Liferay Jungs das System auf Tomcat entwickeln! Die Ext Umgebung deployed von haus aus nicht auf WL.

Die Enterprise Variante (EJB) würde ich selbst im EJB Container nicht empfehlen! Wird kaum getestet und bremst das System. Hier ist jeder Spring Service eine EJB und Spring Services sind hier reichlich vorhanden. Der start des Servers dauert subjektiv doppelt so lange. Wer glaubt er sei mit der EJB Variante flexibler durch die Nutzbarkeit von Portalservices aus anderen Applikationen, der irrt. Da hier direkt mit dem Domänen Modell kommuniziert wird nimmt man auch alle Abhängigkeiten mit zum Client – und das ist das halbe Portal.

Wir nutzen auch die Liferay Services aus anderen EAR´s jedoch verwenden wir die Classpath Singleton Variante. Die funktioniert meistens und bewegt sich meines Erachtens im Graubereich der JEE Spec. (Classloader Probleme bleiben nicht aus :-( )

Beim Blick auch die bestehenden Portlets und des Systems wird klar: „Es gibt nichts was man nicht auch als JSP Scriptlet Programmieren könnte!“. Man findet als JSP getarnte Java Files die nicht mehr als Java Source und Whitespaces haben. „render_portlet.jsp“ da hauts einen glatt den Vogel raus.

Ansonsten arbeitet man mit Struts, was historisch begründet ist. Auf der Roadmap stand schon mal die Migration auf JSF mittlerweile ist sie wieder weg. (Schade)

Das Meer von JSP ist gigantisch und zugleich erschreckend. Ich hab mal gezählt und bin auf 657 gekommen. WOW! Und damit kommen wir zum meinen größten Kritikpunkt die Modularisierungsarchitektur. Ich hätte gedacht ein Projekt was sich mit dem Thema Portal und Portlets auseinander setzt sollte eine gut modularisiere Portal Impl zu Stande bringen. Wenn jedoch in der portal-ejb neben dem Core auch das Bible Portlet, Amazon, Google, Blog, Wiki, Workflow, Chat, Messenger und viele weitere ihren Auftritt haben, ist es nur noch eine Frage der Zeit bis der Portal Core absäuft.
Man muss sich vorstellten der ganze Kram wird immer mit deployed. Wer kann diese Codebase von (334 Packages) noch beherrschen?!

Cool in diesem Zusammenhang ist die „GlobalShutdownAction“. Hier geben sich core, ICQ, Mail, Msn die Hand. Das Zeigt für die enge Verwebung der Portlets. Aussichtslos die mehr als 70 MB große Anwendung zu strippen.

Das Thema Spring wurde anscheinend nur fürs Marketing integriert. Ich würde sagen man nutzt Spring für die Instanzierung der Pojos mehr jedoch nicht.
Es gibt eigene FactorySingeltons für jedes Pojo, kein AOP, kein Spring Hibernate (sondern direkt), kein Dependency Injection… Und damit wirds schwer minimal invasiv ins Portal einzugreifen.

Hier muss Refactored werden anstatt die Oberfläche mit neuen Themes und weiteren Portlets in jedem Release wieder auf Hochglanz zu bringen.
Ein kleiner Schmaler Portal Kern als Webapp und der Rest als eigenständige Portal Webanwendungen würde hier helfen. Das Grund System würde vermutlich nur noch wenige Megabyte groß sein und mann könnte deployen was man auch wirklich braucht.

Für mich war klar: Im „EXT“ wird nur entwickelt wenns nicht anders geht.

Ein Wort zur Doku darf nicht fehlen. Die ist nämlich ein Witz – insbesondere die JavaDoc!
So in etwa ist dann jede Quelle dokumentiert:

/**
 * View Source
 *
 * @author  Brian Wing Shun Chan
 *
 */
public class GlobalShutdownAction extends SimpleAction {

	public void run(String[] ids) throws ActionException {

Genug gejammert über die Architektur!

Wo Schatten da Licht.
Stellt sich die Frage: Was Liferay von den anderen JSR 168 Portalen abhebt:

  • das UI ist genial
  • ein integriertes CMS
  • ein gutes Fachliches Portal Strukturierungs Konzept (Communitys, Pages…)
  • zahlreiche Portlets out of the Box
  • ein umfangreiches Berechtigungskonzept
  • es ist open source

Das CMS,
sollte man nicht überbewerten ist aber ausreichend. Es ist nicht baumartig was sehr unüblich für ein CMS ist. Bilder und Dokumente werden in einem eigenen Repository verwalltet. Eine Linkverwaltung fehlt leider und dies ist gravierend. Images werden mit Ihrer ID im Artikel referenziert (id=1232). Mit einem Kommerziellen CMS System kann es „Journal Content“ nicht aufnehmen. Aber es währe auch paradox sich wegen des CMS für ein Portal zu entscheiden.

Mein Resümee.

Liferay dürfte die am weitesten entwickelte JSR 168 basierte Portallösung auf OpenSource Basis sein. Es deck alle relevanten funktionalen Anforderungen ab hat jedoch Schwächen in Architektur und Design. Solle man am Customizing des Portals selbst interessiert sein, ist die Lernschwelle sehr hoch. Das integrierte CMS ist ein Alleinstellungsmerkmal, jedoch kann das System nicht mit etablierten CMS Lösungen mithalten.

Ich neige zum Schlusssatz: „Außen Hui innen Pfui“

Jedoch muss man sagen das Closed Source Projekte nicht die Flexibilität bieten und diese art Einblicke gewähren.
Wer weiß schon was man da so manches mal betreibt (Weblogic, Bea Portal, Websphere Portal usw.).


Aktionen

Information

16 Antworten

18 10 2007
bon quan

hi,
danke fuer den bericht von liferay aus einer sicht von eine „not just 4 fun“ verwendung aus.
EXT , eigene portles in LR mehr als „helloworld“ selber entwickeln ?. Habe bist jetzt die portlets mit jsf gemacht. Aber jsf & portlets sind noch nicht so weit. Hoffe mit spec aus portlet 2.0 wird es besser.

AD
PS:
Ahh ja, habe den eindruck mit LR 4.3.3 werden die seiten bischen schneller aufgebaut als vorher.

18 10 2007
xandrox

@ bon quan

Hi, danke fürs Feedback!
Auch ich entwickle die Portlets mit JSF MyFaces in getrennten Webanwendungen. Aber manchmal gehts halt nicht anders und man kommt um die EXT Umgebung nicht herum. Wir haben z.B. die Navigationsportlets, eine Custom Search, und ein Custom Journal Content Portlet. Das liegt aber daran dass wir ein Profilsystem ins Liferay integriert haben. Dies setzt z.B. ein anderes Caching Verhalten voraus. Dann haben wir eine eigene Benutzerverwaltung u.s.w.

Derzeit sind wir noch an der Basis. Sobald die steht wird die Hauptentwicklung in getrennten WAR´s stattfinden. Wobei ich das System mittlerweile recht gut von innen kenne – mehr als mir recht ist ;-)

Was gibts gegen JSF und Portlets zu sagen?
OK, das MyfacesGenericPortlet ist große Sc…ße aber das Gespann Liferay – MyFaces trägt.

Das Lifreray 4.3.3 macht mir etwas Angst. Wenn ich drann denke den ganzen Kram portieren zu müssen… Ich glaube ich warte auf 5.x ,dann lohnt sichs wenigstens. Für ein geändertes Look and Feel geb ich mir das nicht.

Auf die Portlet Spec 2.0 freu ich mich auch. Aufer auf der Liferay Rodamap gibts davon noch nichts zu sehen.

Was hast Du mit Liferay vor?

19 10 2007
bon quan

Hi,
>Was gibts gegen JSF und Portlets zu sagen?

Im ersten moment nix(erste gedanke.). Aber wenn man seine gedanken umsetzen will.. hoppla. z.b es gibt fuer portlets(jsr 168) ja kein portlet-listener. Dadurch kein myfaces-tomahawk, keine dynamische-grafik (gif,jpg,png) output als diagramme was mit servlet-container funktioniert hat. Kein file-upload ueber http(s). Kein message(s) austausch zwischen portlets die nicht aus selbem xyz.war kommen. Und aus PortletRequest & PortletResponse runter auf servlet-ebene diese ideen umzusetzen war auch nicht der hit. Ok, heute (2007-10-19) habe mit xyz-bridges zur portlets einige sachen machen koennen. Aber ich haette mir diese extra arbeit zwischen jsf-anwendung und danach „portieren“ auf portlet-anwendung gerne erspart.

>Das Lifreray 4.3.3 macht mir etwas Angst.

Was mir noch mehr angst macht, ist das sowohl server als auch client auf selbem HW immer langsamer wird. Ok, es gibt mehr features mit jede neue version. LDAP-login hoert sich schon mal sehr gut an. Liferay anmeldung unter Fedora Directory Server haette was….

>Auf die Portlet Spec 2.0 freu ich mich auch.
Yep, sind genau die oben beschriebe probleme, welches ich bist jetzt hatte.

>Was hast Du mit Liferay vor
Also, wir http://www.lugal.org verwenden liferay nur als CMS. Ich verwende liferay jsf & co nur als „spielwiese“. Aber gut zu wissen das aus „spiel“ eine „richtige“ anwendung werden kann :-)

Gruss bon quan

20 10 2007
xandrox

ja ganz klar, einige notwendige Dinge werden mit Portlet 2.0 „nachgerüstet“.

Eins frage ich mich natürlich schon: Wenn man ein „nur“ CMS braucht, dann gibt es doch weitaus bessere als Liferay oder? Magnolia, Alfresco …

Da scheint mir eine gehörige Portion Spieltrieb mitzuspielen ;-) Aber ohne denn wehre das Informatiker Dasein wie jeder andere Job.

Gibts von Deiner Seite was zum JBoss Portal zu sagen? Besser? schlechter?

Gruß
Sandro

21 10 2007
bon quan

>Eins frage ich mich natürlich schon: Wenn man ein “nur” CMS braucht,
Zur der zeit (liferay 3.5) kanten wir Magnolia, Alfresco noch gar nicht. Vor
liferay hatten wir opencms. Aber das konnte kein RSS wetter-portlets usw.

>Da scheint mir eine gehörige Portion Spieltrieb mitzuspielen
Klar, als kleinkind spielte ich mit lego und trank dazu tee.Jetzt spiele ich halt mit portlets und dazu kaffee :-) .

>Gibts von Deiner Seite was zum JBoss Portal zu sagen? Besser? schlechter?
Hatte es mal probiert als es zwischen liferay oder jboss-portal werden soll.
Was gegen jboss-portal war, ist das es an jboss-application gebunden ist. Da
ist liferay viel freier. In der IX oktober 2007 seite 82 haben die jetspeed2
liferay und jboss portal getestet. So wie ich den artikel verstanden habe,
hat liferay und jboss-portal fast die selben features. Nur liferay hat vom
allem bischen mehr. z.b portlets,anbindung an andere produkte,administration
usw.

Gruss bon quan

21 10 2007
xandrox

Cool, OpenCms lange nix mehr davon gehört. Ist wizig, da ich früher bei der Firma hinter OpenCMS gearbeitet habe. Was mir im Kopf geblieben ist die mords Geschwindigkeit des Systems ;-) . War aber damals das einzige OpenSource CMS seiner Art, glaube ich zumindest. Aber da müstet Ihr Kummer gewöhnt gewesen sein.

Gruß Sandro

25 10 2007
declima

Hallo,

Fragen über Fragen.

Ich soll jetzt auch Portlets in Liferay einsetzen. Mir fehlt der Einstiegspunkt wie ich anfangen kann/soll. Welche Tools soll ich nutzen und wie müssen Portlets entwickelt werden? Stichpunkte würden mir sehr helfen.

Viele Grüße
Cliff

26 10 2007
xandrox

Hi Cliff,

es ist nicht ganz einfach für Mich Ratschläge zu geben ohne das Umfeld zu kennen.

Meine Empfehlung ist jedoch:

- JSF (MyFaces) als Framework zu nutzen
- nicht in der EXT Umgebung entwickeln sondern eigenständige WAR´s entwickeln
- Sample JSF Portlet War für erste Versuche nutzen
- die Portal Quellen sind auf kurz oder lang hilfreich
- was Tools angeht, nutze ich Eclipse 3.3 j2ee +Maven (bei Bedarf kann ich mal ein Hello World JSF Portlet Maven Projkt erstellen)
- mit dem Tomcat beginnen (im Weblogic mussten wir es einige Dinge fixen)
- es soll so was geben wie die Liferay IDE (ich würde aber ohne sie anfangen)

Gruß Sandro

29 10 2007
declima

Hallo Sandro,

vielen Dank für Deine Antwort. Ich werde das mal durcharbeiten.

Viele Grüße
Cliff

9 12 2007
Alex

hallo sandro,

danke für deinen umfangreichen erfahrungsbericht mit dem liferay portal. ich hätte mir zwar erhofft, ein wenig mehr positives über die architektur des „portalkerns“ und dessen erweiterbarkeit zu lesen, aber es scheint wohl nicht ganz so toll zu sein, wie es die hübsche hülle darstellt.

wir stehen kurz vor der entscheidung, welche java OS portallösung wir für ein neues projekt einsetzen werden und waren jetzt mal beim ersten blick auf liferay ziemlich begeistert (funktionsumfang, optische darstellung, usw.). so wie es aussieht, sollten wir aber mal einen tieferen blick auf die architektur der 4.3er version werfen…

leider kann ich überhaupt noch nicht abschätzen, wie viel wir von der basis anpassen/erweitern werden müssen oder ob sich unsere anforderungen größtenteils in neuen portlets umsetzen lassen werden.

vielleicht kannst du mir ein gefühl geben, ob unsere basisanforderungen standardmäßig abgedeckt sind oder ob wir da schon tiefgehende änderungen in der basis vornehmen müssen werden?

bei unserem projekt geht es um ein community portal („social network“ mit den typischen featuren) in einem fachspezifischen bereich:

*) registrierung / login (inkl. autologin mit cookie) / username bzw. pwd vergessen
*) profiländerung (datenfreigabesystem der einzelnen profildaten für unterschiedliche benutzergruppen –> „wer darf was von mir sehen“, …)
*) „freundesliste“ und benutzer darin in freidefinierbare gruppen (tags) einteilen
*) kalender und forum auf gruppenebene
*) visualisierung der verbindungen zwischen den benutzern des portals (wie z.b. in xing)
*) …

würde mich über jede info bzw. kommentar von dir dazu freuen… danke!

liebe grüße
alex

12 12 2007
gast

autologin funktioniert mittlerweile. login und passw. vergessen funktioniert ohne probleme. solange ihr bei login nur das look&feel ändern möchtet, gibt es keine probleme. eigene bzw. neue login meldung kann man nicht so einfach einbinden.

kalender ist buggy. z.b. werden geburtstage nicht korrekt gespeichert. forum macht bis jetzt keine probleme.

21 06 2008
margi

die neue Liferay 5.0 ist jetzt besser.????

31 07 2008
question

hallo,

wir sind gerade mit einem projekt am start – evtl. 5.x oder gleich 5.1 liferay als basis. danke für die hilfreichen tipps, z.b. eher nicht im EXT herumzubasteln, wenn es nicht nötig ist. da habe ich mir schon einige gedanken gemacht wg. versionierung usw. gemacht. wir würden gern auf JBoss gehen mit – ejb 3, web technologie offen. dokumentation gibt es wenig, deshalb die frage, ob diese kombination uns nicht mit dem, was du oben geschrieben hast, erstmal einige schwierigkeiten bringen wird. wenn es deine zeit zulässt, wären ein paar start-up tipps rund um’s thema nett.

danke,

3 08 2008
xandrox

Hi „question“?!

ich glaube die Kobination Liferay + JBoss ist am verbreitetsten wenn man einen JEE Container benötigt. Das sollte auch bedeuten das mit nicht zu vielen Serverspezifischen Bugs zu rechenen ist. Wenn man die Deploymentmatrix von LP nimmt hätten wir mit Weblogic kein Problem haben sollen. So wars dann aber nicht.

Ich würde auf jeden fall die WAR Version bevorzugen. Bootet erheblich schneller. Die EJB Variante gibts glaub ich auch nicht mehr.

Über die doku brauchen wir nicht zu sprechen. Es gibt jedoch Artikel die loben explizit die tolle Doku (http://fleksray.org/vergleich-enterprise-portale.html)! Was müssen die für schlechte Doku gewohnt sein…

Ich finde das LP Wiki eine gute Knowledge base.

Was wirds denn für ein Portal? Intranet/Internet, applikationslastig oder contentlastig, personalisierbar, eigene Portlets oder die LP Portlet?

Ich wünsche viel Erfolg beim Projekt und helfe gern bei Fragen.

Gruß Sandro

6 08 2008
question

Wir haben die WAR in JBoss 4.2.3-GA gebastelt, dass lief recht problemlos (die Doku war nur halb veraltet).

Momentaner Rahmen: eher Internet, eher content-lastig
Zukünftig (das kennen wir ja): evtl. strategische Plattform für noch mehr content aber auch ein wenig mehr logik (richtung intranet)

Ein paar Portlets werden wir komplett schreiben, ein paar Portlets würden wir gern aus LP verwenden – allerdings nur nach Anpassung (auch programmatisch) aus. Da wir aber JSF bevorzugen würden, läuft es hier schon auseinander.
Deshalb ist eine Frage, wie man das mit den LP Portlets hält? Direkt Anpassen wäre eingangs weniger Aufwand, dann hängen wir aber direkt dran (Struts, Persistenz, usw.) Nach deinem Bericht würden wir evtl. eher erstmal „herausoperieren“ und auf unseren Technik Stack anpassen – hier heisst es aber viel mehr Aufwand.

Hast Du gute Erfahrung mit der Konfiguration und LARs gemacht – im Moment wäre unser Build Prozess Vorhaben:
- baue Portlets (eigene und angepasste)
- baue Portal mit Konfiguration aus ext
- nimm das LAR xxx mit dem Customizing
–> Server fertig ;-) Mag eine naive Vorstellung sein – hier wäre ein guter Rat sehr hilfreich. Viele Dank für Deine Hilfe.

25 08 2009
Peter Bond

Hallo,.

gibt es ein plugin oder ähnliches, um meine liferay seite relativ barriere frei zu gestalten?

Kennt da jemand eine praktikable Lösung ?

Kommentieren