Liferay als Java-Portal-Entwicklungsplattform
-
Upload
gedoplan -
Category
Technology
-
view
293 -
download
0
description
Transcript of Liferay als Java-Portal-Entwicklungsplattform
Liferay Portal Server
GEDOPLAN Java Expertenkreis in Bielefeld 27.03.2014
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Agenda
Kurzvorstellung ITSD
Portal-Technologien
Liferay Vorstellung
Mein erstes Portlet
Portlet- und Web-Entwicklung, die Unterschiede
Wie können vorhandene Web-Anwendungen migriert werden.
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Wer ist ITSD Consulting?
IT Systemhaus aus OWL
Anfang 2000 gegründet
Tätigkeitsradius: bundesweit
Standorte: Minden (Hauptsitz) und Bünde
Team aus 20 IT-Experten
Positionen: Projektleitung, Analyse und Design, Moderation, Anwendungsberatung, IT-Beratung
Schwerpunkte:
Open Source Softwareentwicklung mit Java
Beratung im Bereich Enterprise-Technologien
Umsetzung von IT-Projekten im Unternehmensumfeld
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Kompetenzen
HR-Lösungen
Stellenbe- schreibung u. -
bewertung
Leistungsbe-wertung (inkl. ZV)
Personalent-wicklung
BEM
HR-Workflows
Portale
Web- Portal-Entwicklung (z.B.
JSF 2.x)
Liferay
Enterprise 2.0
Unternehmens-portale
Geschäftsprozesse
Prozessanalyse
BPMN 2.0
Umsetzung
IT-Consulting
Fachpersonal-leasing
IT-Beratung
Open Source Java Technologien
IT-Projektleitung
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Portal
ehemaliger Haupteingang des Ernst-Ludwig-Hauses mit Freitreppe (Museum Künstlerkolonie Darmstadt)
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Was ist ein Portal?
„Portal“ kommt vom lateinischen Wort „porta“ - die Tür bzw. das Tor. Es bezeichnet einen besonders ausgestalteten Eingang zu einem größeren Gebäude.
zentrales IT-System, in dem alle Arten von Informationen unterschiedlichsten Zielgruppen ortsunabhängig zugänglich gemacht werden können
Möglichkeit zur Integration von Anwendungen, Prozessen und Diensten
Verknüpfung und Datenaustausch zwischen heterogenen Anwendungen (Portlets) oftmals auf einer Portalseite unter dem "Dach" der Portalplattform
Unterstützung von Geschäftsprozessen
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Typische Portaldienste und -funktionen
Darstellung / Präsentation durch homogene Oberfläche zentrales IT-System, in dem alle Arten von Informationen unterschiedlichsten Zielgruppen ortsunabhängig zugänglich gemacht werden können.
Personalisierung durch individuelle Anpassungen des Hintergrundes, der Anordnung, der Größe aber auch inhaltlich der relevanten Informationen (Maßnahmen gegen Information Overflow)
hochentwickelte Suchmaschinen
wichtige Informationen schnell und unkompliziert auffinden
hochgradig skalierbar im Bezug auf Benutzeranzahl
eine Handvoll Benutzer
Infrastrukturdienste/Sicherheit
zentraler Zugriff via Single-Sign-On
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Typische Portaldienste und -funktionen
Navigation
Steuerung und Strukturierung der Bedienung
Benutzerverwaltung
Rollen, Rechte, ...
Wissens- bzw. Content Management
Bereitstellung von Inhalten verschiedener Quellen
Benachrichtigungen
Übermittlung relevanter Signale an den Benutzer (Notifikation)
Workflow Management
Gestaltung von Arbeitsabläufen z.B. Genehmigungsprozessen, …
Anwendungsintegration
Kollaboration: Zusammenarbeit in virtuellen Team- oder Projekträumen
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Portale mit Unternehmensinformationen
Ankündigungen, Events, Quartalszahlen
Berichte, Nachrichten, Wetter, Aktienkurse
E-Mail, Kalender, Geschäftsanwendungen
ggf. Zugang zu kleineren Abteilungsportalen
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Architektur
Server delegiert Anfragen an Portlet-Engine
Portlet-Engine verwaltet Lebenszyklus der Portlets mit Aktions- und Renderanfragen
Portlets können Daten aus mehreren verschiedenen Quellen beziehen
Datenbanken
WebServices
andere Anwendungen
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
"marktführende" Hersteller laut Gartner
IBM (WebSphere Portal Server)
Microsoft (Office SharePoint Server)
SAP (NetWeaver Portal)
Oracle (WebCenter)
Liferay (Portal)
Einziger Open-Source Anbieter unter den führenden Lösungen im Gartner Report „Magic Quadrant for Horizontal Portal Products“
Auf „Augenhöhe“ mit IBM, MS, Oracle und SAP
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Technologiestandards
Darstellung
HTML / XHTML
CSS
Integration
WebServices
Java EE Connector Architecture
Portlets
JSR 168
JSR 286
Web Services for Remote Portlets
Inhalte
RSS
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Technologiestandards
Content Management (CMS)
Web-based Distributed Authoring and Versioning (WebDAV)
Content Repository for Java Technology API
JSR 170
JSR 283
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Vorteile
relativ hohe Benutzerakzeptanz
Verknüpfung von Informationen über Applikationsgrenzen hinweg
transparente und effiziente Prozesse
Single-Sign-On
hoher Funktionalitätsumfang von vornherein "out-of-the-box"
ausgereifte technologische Konzepte
Einhaltung von Industriestandards
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Einsatzgebiete
B2E - Mitarbeiter/Unternehmens-Intranet
Kommunikation und Geschäftsprozesse innerhalb der eigenen Unternehmensinfrastruktur
B2B - Geschäftspartner/Unternehmens-Extranet
Kommunikation und Geschäftsprozesse mit externen Kundenbeziehungen
Kommunikations- und Presseplattform
Verlags- und Publikationsplattform
digitales Rechte Management (DRM)
B2C - Endkunden/Verkaufs-/Vertriebsplattform
Produktkatalog + Shop
Online-Banking und Finanzsystem
Bürgerportal öffentlicher Verwaltungen
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Liferay?
Im Jahr 2000 von Brian Chan begonnenes Projekt
Ziel: Non-Profit Enterprise Portal Alternative
Gründung Liferay, Inc. im Jahr 2004
Ende 2008: Software Umbenennung in „Liferay Portal“
Im Zuge dessen, neues Projekt: Liferay Social Office
Brian Chan - Founder & Chief Software Architect
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Was macht Liferay aus?
Produktteile und Funktionen
Content-Management-System
Sozialnetzwerk
Blog, Freunde usw.
Web
Trennung durch Group, Site, Organisation
Kollaboration (Web-Zusammenarbeit)
Versionierung, Liferay Sync, Chat, Wiki, Forum, Workflow
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Was macht Liferay aus?
Anpassbarkeit (Hooks, Themes, Ext.)
Erweiterbarkeit (Portlets)
Authentifizierung und Autorisierung über Single Sign-on (SSO)
Personalisierung und Anordnung der Web-Elemente durch die Benutzer mittels Drag and Drop
WebDAV
Taggen und Suchen von beliebigen Inhalten
I18N (Standard-Übersetzungen für 32 Sprachen)
plattformunabhängig, skalierbar und replikationsfähig
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Liferay CE vs. EE
CE EE
LGPLv2 Enterprise Open Source Lizenz
Im Schnitt alle 2-4 Monate ein Release Service Packs
Hot Fixes
Security Alerts
Einige weitere Features
24h Support
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Liferay Quellen
Liferay.com
Wiki, Forum, Blogs
http://www.liferay.com/de/products/liferay-portal/tech-specs
Jira
issues.liferay.com
Sourceforge Projekt
sourceforge.net/projects/lportal
github.com
https://github.com/liferay/
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Erweiterungen von Liferay
Marketplace
Bietet Erweiterungen für EE und auch CE
Einige von Liferay aber auch externe Anbieter
Social Office
„Enterprise Collaboration“
vormals vorkonfiguriertes Liferay Portal
heute als .lpkg Installationspaket für Liferay Portal
neueste Version 3.0.0 setzt Liferay Portal 6.2 voraus
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Social Office
Eigenes Theme
Vorkonfigurierte Portlets
Wiki
Kalender
Dokumenten-Bibliothek
Forum
Freunde
Profil
uvm. siehe: http://www.liferay.com/de/products/liferay-social-office/features
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Liferay - Basics
Unterstützt viele Datenbanksysteme
IBM DB2, MySQL, Oracle, PostgresSQL, SQL Server, Sybase, (Developer Modus: HSQLDB)
Viele Applikationsserver und Servlet Engines
Geronimo, GlassFish, JBoss, JOnAS, OracleAS, SUN JSAS, WebLogic, WebSphere
Jetty, Resin, Tomcat
OS
Linux (CentOS, RHES, SUSE, Ubuntu und andere), Unix (AIX, HP-UX, Mac OS X, Solaris und andere), Windows
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Entwicklungsumgebung
Liferay IDE
Basis ist Eclipse
Viele Funktionen enthalten
Erstellung von Projekten
TestServer Management
Verwaltung von Projekten bzw. Erweiterung
Liferay-SDK (Unterstützung von Ant, Maven, Ivy)
Liferay Developer Studio (LR EE)
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Unser erstes Portlet
Liferay IDE 2.x
Liferay 6.2
JSF 2.x
Hello-World
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Administration/Konfiguration
Organisationen
Sites
Benutzer
Teams
Gruppen
Rollen
Berechtigungen
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Liferay-Entwicklungsschnittstellen
Hooks
Portlets
Themes
Layout Templates
Liferay Frameworks
Ext
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Hooks
Schalten sich zwischen die Liferay Funktionalitäten
Teile vom Liferay Core durch eigene Implementierungen überschreiben
Besser als Ext weil
Hot-deployable
Undeploy möglich
Leichter zu erstellen und zu warten (Maintenance, Server-Update)
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Hooks
Was kann ein Hook?
Portal properties
Language properties
JSP‘s
Services
Erweiterungen bzw. Anpassungen an den Liferay Seiten
Überschreiben von Ressourcen
Custom Actions
Struts Actions (old)
Portal.properties
Language.properties
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Liferay Services
Liferay Service Builder
Service wird mittels XML beschrieben
Liferay generiert Interfaces, Implementierungen, Zugriffsklassen, POJOs, SQL-Statements, Finder-Methoden, etc.
Beim Deployment von Portlets legt Liferay automatisch die benötigten Tabellen an.
Update-Mechanismus
Remote und lokaler Zugriff
Liferay liefert für seine Tabellen entsprechende Zugriffsklassen
Automatisches generieren von Web-Services bzw. JSON
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Liferay Vorteile
Umfang vorhandener Portlets (Wiki, Blogs, Mircoblogs, Chat, Freunde, Aufgaben, Kalender, etc.)
Vorhanden Portets und Portal-Funktionen können einfach angepasst werden
riesiger Funktionsumfang (SSO, CalDAV/WebDAV, Dokumentenmanagement, CMS, Berechtigungskonzept, Bootstrap, Lucene, …)
Unterstützung von JSF
Unterstützung vieler Standards (JSR168, JSR 286, etc.)
Große Community – Entwicklung Forenteilnehmer:
12/2009: 11.345 03/2014: 24.525
Enterprise 2.0 (Social Office)
Laut Gartner ein “Leader”
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Liferay Nachteile
Hohe Komplexität und Funktionsumfang (z.B. Berechtigungssystem)
Qualität der vorhandener Portlets unterschiedlich
Umsetzung vorhandener Portlets unterschiedlich (HTML5, JSP, JavaScript, Struts, JSF, etc.)
Eigener Service-Layer
Unterstützung von JSF nur teilweise in den vorhandenen Portlets
EE vs. CE
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Unterschiede: HTTP Session und Portlet Session
HTTP Session und Portlet Session
Ein Session-Objekt pro Sitzung
Bindung von Objekten an die Session
Lesen und Schreiben von Informationen
PortletSession bietet weiteren Gültigkeitsbereich (Scope)
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
HTTP Session
ein Gültigkeitsbereich
Zugriff aller Servlets innerhalb einer Webapplikation
Beispiel schreiben
public class FirstServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse
response) {
try {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
session.setAttribute("uname", "User");
out.print("<a href='servlet2'>visit</a>");
out.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
HTTP Session
Beispiel auslesen
public class SecondServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
try{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
HttpSession session=request.getSession(false);
String n=(String)session.getAttribute("uname");
out.print("Hello "+n);
out.close();
}catch(Exception e){System.out.println(e);}
}
}
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Portlet Session
basiert auf HTTP-Session
zwei Gültigkeitsbereiche
Application Scope
Zugriff von jedem Portlet und/oder Servlet
Sessionattribut mit diesem Scope auch in HTTP-Session verfügbar
Portlet Scope
default
Zugriff nur innerhalb eines Portlets
Container hängt intern PortletId an SessionKey
somit nicht in HTTP-Session verfügbar
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Portlet Session
Beispiel auslesen
public class SecondPortlet extends GenericPortlet {
@Override
protected void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
try {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
PortletSession session = request.getPortletSession();
String n = (String) session.getAttribute("uname");
out.print("Hello " + n);
out.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
PortletRequest
Basis-Interface stellt Portlet Client-Request bereit
ActionRequest
RenderRequest
Ähnlichkeiten zu HttpServletRequest bzw. ServletRequest
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
PortletResponse
Basis-Interface stellt Portlet Client-Request bereit
ActionRequest
RenderRequest
Ähnlich wie HttpServletRequest bzw. ServletRequest
wird im Unterschied zur ServletResponse nicht direkt an Client gesendet
wird stattdessen an den Portal Server gesendet
übliche Verwendung
encodeNamespace
fügt einem String als Präfix den Portletnamen hinzu
wichtig um etwa Namenskollisionen in JavaScript Variablen zu vermeiden
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
PortletResponse
encodeURL
übergebener String wird zu einer kompletten URL kodiert
test.gif -> http://www.example.com/../test.gif übergeben durch
createURI/createReturnURI
instantiiert ein neues PortletURI-Object
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
HttpServlet
1
1
Beispiel Servlet
doGet()
doPost()
public class HelloWorld extends HttpServlet {
public void init() throws ServletException {
// Do required initialization
}
public void doGet(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
// Inhaltstyp für Ruckgabe festlegen
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.println("<p>Hello Servlet World!</p>");
}
}
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
GenericPortlet
1
1
1
1
Beispiel Portlet
processAction()
doView()
public class HelloWorld extends GenericPortlet {
public void init(PortletConfig portletConfig) throws UnavailableException,
PortletException
{
super.init(portletConfig);
}
public void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException
{
// Inhaltstyp für Rückgabe festlegen
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.println("<p class='wpsPortletText'>Hello Portal World!</p>");
}
}
doEdit()
doHelp()
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Migration: Analyse des vorhandenen Systems
Welche Web-Technologien wurden wie eingesetzt (JSP/Struts, JSF, etc., wurden Templates verwendet?)
Welches Persistenzframework wurde eingesetzt? (Hibernate/Spring, JPA, Eigenentwicklung?)
Soll nur Liferay unterstützt werden?
Was ist mit anderen Portal-Systemen (wie z.B. GateIn)?
Soll weiterhin die Web-Applikation unterstützt werden? Wenn ja warum?
Welche Funktionen sollen/müssen ausgetauscht werden? (Berechtigungssystem, bisherige Integrationen, etc.)
Welche LR Funktionen sollen zukünftig genutzt werden? (Portlets, Layout, SSO, Lucene, CMS, Wiki, etc.)
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Migration 1: Na ja, keine echte Migration…
LR IFrame-Portlet
Unterstützung von Auth.-Verfahren (Basic, Form)
Trotzdem oft Anpassung der Web-Anwendung notwendig
Individuelles IFrame-Portlet entwickeln
Beseitigung von Darstellungsproblemen
Bessere individuelle Parameter-Übergabe (z.B. User-Name, Gruppen-Name, etc.)
Zugriff auf LR-Umgebung
Bsp: BigBlueButton
Web Services for Remote Portlets (WSRP) (nur geeignet, wenn andere Anwendung schon im Portal läuft)
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Neues Portlet: Frontend anpassen
Seiten-Aufbau von LR zeigen
Anpassung der xhtml oder JSP Seiten
Header, Content, Footer
Css reduzieren
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Implementierungen austauschen
Servlet-Api gegen Portlet-Api austauschen
Service-Schicht anpassen
Implementierung austauschen
z.B. zur Ablage von Dokumenten
z.B. Lucene-Indexer
DAO-Schicht austauschen?
nicht unbedingt notwendig
abhängig von der Architektur
Datasource von LR verwenden
Connection-Pool
PortletRequest request = (PortletRequest)facesContext.getExternalContext().getRequest();
PortletResponse response = (PortletResponse)facesContext.getExternalContext().getResponse();
PortletContext context = (PortletContext)facesContext.getExternalContext().getContext();
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Berechtigungssystem?
Implementierung austauschen
Action-Permission sind unproblematisch
in portlet.xml eintragen
Model-Permissions sind schwieriger
Berechtigung werden beim Speichern des Models festgelegt Portlet Scope
Hinzufügen von neuen Rollen/Rechten etc. aufwendig
Aber danach: Gute Performance!
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Vorteile vom Portal nutzen
Kalender, Blogs, Aufgaben, Aktivitäten
Permissions, Scopes etc.
Volltext-Suche (Lucene)
Dokumentenmanagement
SSO
Portlet-Navigation anstatt Faces-Navigation
Liferay Portal Server GEDOPLAN Expertenkreis Java in Bielefeld – 27.03.2014
Vielen Dank für Ihre
Aufmerksamkeit
Ihr Ansprechpartner Frank Schlinkheider Projektleitung & Anwendungsberatung ITSD Consulting GmbH Lindenstr. 44 32423 Minden – Germany Mail: [email protected] Fon: +49 - 571 - 934 152 10 Fax: +49 - 571 - 934 152 19