Liferay Portal Server Java Forum Stuttgart 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.2014 Kompetenzen HR-Lösungen Stellenbeschreibung u. bewertung Leistungsbewertung (inkl. ZV) Portale Web- PortalEntwicklung (z.B. JSF 2.x) Liferay Personalentwicklung Enterprise 2.0 BEM Unternehmensportale Geschäftsprozesse IT-Consulting Prozessanalyse Fachpersonalleasing BPMN 2.0 IT-Beratung Umsetzung Open Source Java Technologien IT-Projektleitung HR-Workflows Liferay Portal Server Java Forum Stuttgart - 17.07.2014 Portal ehemaliger Haupteingang des Ernst-Ludwig-Hauses mit Freitreppe (Museum Künstlerkolonie Darmstadt) Liferay Portal Server Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.2014 Typische Portaldienste und -funktionen Darstellung/Präsentation durch homogene Oberfläche zentrales ITSystem, 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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 und Shop Online-Banking und Finanzsystem Bürgerportal öffentlicher Verwaltungen Liferay Portal Server Java Forum Stuttgart - 17.07.2014 Liferay? Brian Chan - Founder & Chief Software Architect 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 Liferay Portal Server Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.2014 Liferay Portal Server Java Forum Stuttgart - 17.07.2014 Liferay Portal Server Java Forum Stuttgart - 17.07.2014 Liferay Portal Server Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.2014 Social Office Eigenes Theme Vorkonfigurierte Portlets Wiki Kalender Dokumenten-Bibliothek Forum Freunde Profil uvm. siehe: http://www.liferay.com/de/products/liferay-socialoffice/features Liferay Portal Server Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.2014 Unser erstes Portlet Liferay IDE 2.x Liferay 6.2 JSF 2.x Hello-World Liferay Portal Server Java Forum Stuttgart - 17.07.2014 Administration/Konfiguration Organisationen Sites Benutzer Teams Gruppen Rollen Berechtigungen Liferay Portal Server Java Forum Stuttgart - 17.07.2014 Liferay-Entwicklungsschnittstellen Hooks Portlets Themes Layout Templates Liferay Frameworks Ext Liferay Portal Server Java Forum Stuttgart - 17.07.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) Mehrere Hooks pro Server möglich Liferay Portal Server Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.2014 PortletRequest Basis-Interface stellt Portlet Client-Request bereit ActionRequest RenderRequest Ähnlichkeiten zu HttpServletRequest bzw. ServletRequest Liferay Portal Server Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.2014 HttpServlet 1doGet() 1doPost() Beispiel Servlet 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 Java Forum Stuttgart - 17.07.2014 GenericPortlet 1processAction() 1doView() 1doEdit() 1doHelp() Beispiel Portlet 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>"); } } Liferay Portal Server Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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, GruppenName, 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 Java Forum Stuttgart - 17.07.2014 Neues Portlet: Frontend anpassen Seiten-Aufbau von LR zeigen Anpassung der xhtml oder JSP Seiten Header, Content, Footer Css reduzieren Liferay Portal Server Java Forum Stuttgart - 17.07.2014 Implementierungen austauschen Servlet-Api gegen Portlet-Api austauschen PortletRequest request = (PortletRequest)facesContext.getExternalContext().getRequest(); PortletResponse response = (PortletResponse)facesContext.getExternalContext().getResponse(); PortletContext context = (PortletContext)facesContext.getExternalContext().getContext(); 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 Liferay Portal Server Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.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 Java Forum Stuttgart - 17.07.2014 Vielen Dank für Ihre Aufmerksamkeit Ihr Ansprechpartner Frank Schlinkheider Geschäftsführung, 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 Liferay Portal Server Java Forum Stuttgart - 17.07.2014