Eclipse Stuff

Just another WordPress.com weblog

Archiv für die Kategorie ‘portlet’

Installation von Liferay Portal unter Debian und Glassfish

Verfasst von splitshade am April 17, 2009

Ich habe mich gerade eine ganze Weile mit der Installation von Liferay Poral 5.2 unter einer existierenden Glassfish-Installation herumgeärgert, damit mir das nicht nochmal passiert, habe ich hier die notwendigen Schritte dokumentiert:

1. Download des entsprechenden War-Files von hier.

2. Deploy des Warfiles unter Glassfish

3. Download der zugehörigen Dependencies von hier und entpacken in das globale Glassfish-Application Lib Verzeichnis ([GLASSFISH_HOME]/lib)

4. Hochsetzen des MaxPermSize für den Memoryverbrauch des Glassfish (siehe hier), ich konnte nach dem Deployment von Liferay die Admin-Konsole nicht mehr starten.

5. Anlegen einer Datasource für Liferay und Konfiguration derselben in der portlet-ext.properties (siehe hier)

6. Importieren der entsprechenden SQL-Skripte (siehe hier) oder Liferay das Ganze automatisch generieren lassen (hierzu einfach in der portal-ext.properties die beiden Properties

schema.run.enabled=true
schema.run.minimal=true

setzen.)
7. Neustart des Servers

Das sollte es eigentlich gewesen sein, viel Spass damit.

Veröffentlicht in portlet | Kommentar schreiben »

Portlet-Kurzreferenz

Verfasst von splitshade am Oktober 16, 2008

Ich habe mir kürzlich mal einige NOtizen zu Portlets gemacht, da dieser Blog mir als Notizblock dient, hier die Notizen

Portlet-Konfiguration

Portlets haben einen eigenen Deployment-Deskriptor – portlet.xml.

Dieser befindet sich im Verzeichnis WEB-INF.

Eine typische Konfiguration sieht so aus:

<portlet-app

xmlns=„http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd“

version=„1.0″ xmlns:xsi=„http://www.w3.org/2001/XMLSchema-instance“

xsi:schemaLocation=„http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd“>

<portlet id=„Pentasys_Login_Portlet“>

<portlet-name>PLoginPortlet</portlet-name>

<display-name>PENTASYS Login Portlet</display-name>

<portlet-class>

com.sun.faces.portlet.FacesPortlet

</portlet-class>

<!– <portlet-class>de.pentasys.myfaces.portlet.MyFacesGenericPortlet</portlet-class> –>

<init-param>

<name>default-view</name>

<value>/pages/index.jsp</value>

</init-param>

<init-param>

<description></description> <name>com.sun.faces.portlet.INIT_VIEW</name>

<value>/pages/index.jsp</value>

</init-param>

<init-param>

<description></description> <name>com.sun.faces.portlet.INIT_EDIT</name>

<value>/pages/edit.jsp</value>

</init-param>

<supports>

<mime-type>text/html</mime-type>

<portlet-mode>VIEW</portlet-mode>

</supports>

<portlet-info>

<title>Pentasys Login Portlet</title>

<short-title>Pentasys Login Portlet</short-title>

<keywords>Pentasys Login Portlet</keywords>

</portlet-info>

</portlet>

</portlet-app>

Interessant hierbei ist der Tag <Portlet-Info>, da hier Meta-Informationen wie Titel etc.. angegeben werden können.

§ Der Tag <Portlet-Class> gibt die jeweilige Portlet-Klasse an (in diesem Fall ein BridgePortlet zur Verwendung von JSF)

§ Der Tag <init-param> kann benutzt werden, um init-Parameter an das Portlet zu übergeben.

§ Soll ein Resource-Bundle genutzt werden, kann dies mit dem Tag
<resource-bundle>com.foo.myApp.QuotePortlet</resource-bundle> geschehen.

Portlet-URL

Es gibt 2 URL-Typen – ActionURL und RenderURL.

Hiermit wird eine URL erzeugt, die den Portlet-Container entweder veranlasst, die processAction… oder die render.. Methoden aufzurufen. Um eine URL zu erstellen kann die create<..>URL – Methoden eines renderResponse-Objektes genutzt werden.

Innerhalb einer URL kann ebenfalls der PortletMode und die WindowState-Parameter gesetzt werden.

Standard-Portlet-Modes sind VIEW, EDIT und HELP. Eigene Modes können implementiert werden.

Welche Modi ein Portlet unterstützt wird im Deployment-Deskriptor festgelegt, mit Hilfe des Tags

<supports>

<mime-type>text/html</mime-type>

<portlet-mode>VIEW</portlet-mode>

</supports>

Unterstütze Window States sind NORMAL, MAXIMIZED und MINIMIZED.

Portal-Context

Jedes Portlet hat einen eigenen Context. Daten eines PortletContextes werden im ServletContext gespeichert, d.h. Portlets haben Zugriff auf Servlet-Daten und umgekehrt.

Portlet-Request

Über den Portlet-Request lassen sich Sicherheitsinformationen erfragen:

getAuthType()

getRemoteUser()

getUserPrincipal()

isUserInRole()

isSecure()

- Die Methode getAuthType liefert einen der möglichen Werte (BASIC_AUTH, DIGEST_AUTH, CERT_AUTH and FORM_AUTH)

- Die Methode getRemoteUser liefert den UserNamen des Benutzers der den Request abgesetzt hat.

- getUserPrincipal liefert ein Objekt vom Typ java.security.Principal mit dem Namen des Benutzers.

Portlet-Response

Über den Response kann ein Redirect veranlasst werden, mit der Methode „sendRedirect()“.

Preferences

Zum Verwalten von Preferences bietet ein Portlet die Klasse „PortletPreferences“.

Bsp:

PortletPreferences prefs = req.getPreferences();

String[] symbols =

prefs.getValues(”preferredStockSymbols”,

new String[]{”ACME”,”FOO”});

String 5 url = prefs.getValue(”quotesFeedURL”,null);

int refreshInterval =

Integer.parseInt(prefs.getValue(”refresh”,”10”));

Der Zusätliche Parameter jeweils ist ein Default-Value der zurückgegeben wird, wenn der angeforderte Wert nicht vorhanden ist.

Preferences sind Benutzerspezifisch und sollten nicht zwischen Benutzersessions geteilt werden.

Es ist möglich, für Preferences Default-Values im Deployment-Deskriptor zu übergeben.

<portlet-preferences>

<preference>

<name>PreferredStockSymbols</name>

<value>FOO</value>

<value>XYZ</value>

<read-only>true</read-only>

</preference>

<preference>

<name>quotesFeedURL</name>

<value>http://www.foomarket.com/quotes</value>

</preference>

</portlet-preferences>

</portlet>

Preferences können validiert werden, hierfür muss eine Klasse vom Typ PreferencesValidator implementiert werden und anschliessend im DeploymentDeskriptor registriert werden.

<portlet-preferences>

<preferences-validator>

com.foo.portlets.XYZValidator

</preferences-validator>

</portlet-preferences>

Sessions

Für das Session-Management bei Portlets gibt es 2 Scopes (APPLICATION- und SESSION-SCOPE).

Attribute im SessionScope bleiben gültig, solange man sich im gleichen PortletWindow befindet.

Dispatching

Ein Request-Dispatcher kann vom PortletContext über die Methode getRequestDispatcher(<Pfad>) erfragt werden. Der Pfad ist relativ zum Root des Contextes und muss mit einem „/“ beginnen.

Über die Methode getNamedDispatcher(<name>) kann ein Dispatcher für ein bekanntes Servlet erfragt werden.

Um ein Servlet- oder eine JSP-Seite zu inkludieren wird die Methode include(..) eines Request-Dispatchers aufgerufen.

Security

Die zuvor beschriebene Methode isUserInRole(..) kann benutzt werden, um zu prüfen ob ein user eine bestimmte Benutzerrolle innehat. Hierzu muss im Deployment-Deskriptor folgender Tag vorhanden sein.

<portlet>

<security-role-ref>

<role-name>FOO</role-name>

<role-link>manager</manager>

</security-role-ref>

</portlet>

Das Element<role-link> wird dazu benutzt, um einen Rollennamen auf eine im web.xml deployment-deskriptor angegebene rolle zu mappen. Wird dieses Element nicht angegeben, wird automatisch versucht, eine definierte Rolle mit dem im element <role-name> angegebenen value zu finden. Die hier definierten Rollen können als Argument für die Methode isUserInRole(..) genutzt werden.

Portlets können mit User-Constraints geschützt werden.

<security-constraint>

<display-name>Secure Portlets</display-name>

<portlet-collection>

<portlet-name>accountSummary</portlet-name>

</portlet-collection>

<user-data-constraint/>

<transport-guarantee>CONFIDENTIAL</transport-guarantee>

</user-data-constraint>

</security-constraint>

Tag-Lib

Es gibt eine TagLib zur Verwendung innerhalb von JSP-Seiten.

<%@ taglib uri=”http://java.sun.com/portlet” prefix=”p” %>

Über den Tag “<p:defineObject/>” warden nun die Objekte “renderRequest”,“renderResponse” und „portletConfig“ zur Verfügung gestellt.

Weiterhin kann über den Tag <p:actionURL/> und <p:renderURL/> eine jeweilige Action/oder RenderURL generiert werden.

Parameter für actionURL sind windowState, portletMode.

<portlet:actionURL windowState=”maximized” portletMode=”edit”>

<portlet:param name=”action” value=”editStocks”/>

</portlet:actionURL>

Veröffentlicht in allgemein, portlet | Kommentar schreiben »