Oracle Portal
Aus Xmaswiki
Installation Oracle Portal 10.1.2.0.2 (Linux)
Vorbereitende Maßnahmen
Löschen voriger Oracle Instanzen
Dienste löschen
rausfinden ob noch Dienste laufen (oracle ist dabei db user)
> ps -ef | grep oracle
falls noch welche laufen
> pkill -u oracle
falls nicht alle auf einmal entfernt werden können dann
> kill -9 [ID]
bei [ID] die nummer aus der Prozessauflistung
Dateien löschen
> rm /as10gr2/infra -rf
Host Einträge beachten
> vi /etc/hosts
127.0.0.1 localhost.localdomain localhost
127.0.0.1 name.domain.com name
Installation der Infrastructure (Infra-Tier)
xhost aktivieren
> xhost +
sollte danach folgendes kommen
> access control disabled, clients can connect from any host
Installer starten
nun als user oracle einloggen (ggf. vorher erstellen)
danach das runInstaller.sh Script im Verzeichnis Disk1 ausführen
Specify Inventory directory and credentials
Bestandsverzeichnis: /as10gr2/infra/oraInventory
Name für Betriebssystemgruppe: oinstall
Root script ausführen
jetzt als root das script /oracle/as10gr2/infra/oraInventory/orainstRoot.sh ausführen
Specify File Locations
Quellpfad: /as10gr2/software/as10gr2/Disk1/stage/products.xml
Name: as10gr2infra
Pfad: /as10gr2/infra
Select a Product to Install
Oracle Application Server Infrastructure 10g 10.1.2.0.2
Select Installation Type
Identity Management und Metadaten-Repository (3.63GB)
Confirm Pre-Installation Requirements
root ankreuzen
Select Configruation Options
- Oracle Internet Directory
- Oracle Application Server Single Sign-On
- Oracle Delegated Administration
- Oracle Application Server Directory Integration
Specify Port Configuration Options
Automatic
Specify Namespace in Internet Directory
Custom: dc=domain,dc=com
Specify Database Configuration Options
Datenbankname: orcl.name.domain.com
SID: orcl
Specify Database Schema Passwords
Kennwörter gleich: xxx
Specify Instance Name and ias_admin Password
Instance-Name: as10gr2infra
Kennwörter: xxx
Installation des Application Server 10.1.2.0.2 (Middle-Tier)
Specify File Locations
Ziel: as10gr2mid Pfad: /as10gr2/mid
Select a Product to Install
Oracle Application Server 10g 10.1.2.0.2
Select Installation Type
Business Intelligence and Forms
Confirm Pre-Installation Requirements
root ankreuzen
Select Configruation Options
- Oracle Application Server 10g Portal
- Oracle Application Server 10g Wireless
- Oracle Application Server 10g Discoverer
- Oracle Application Server 10g Personalization
- Oracle Application Server 10g Report Services
- Oracle Application Server 10g Forms Services
Seitengruppe anlegen (10.1.4)
Zur Erstellung einer Seitengruppe/ einer Portalseite muss man diese über den Navigator des Application Server anlegen. Der Application Server läuft dabei meistens auf Port 7777 oder 7778 und man kann sich auf der rechten Seite als orcladmin mit Passwort einloggen. Nachdem nun die Standardstartseite sieht, kann man rechts oben auf Navigator klicken und bekommt dann eine Übersicht der bereits vorhandenen Seitengruppen. Klickt man oben links auf Seitengruppe so wird eine neue erstellt. Es empfiehlt sich dabei, zuerst einen Namen zu wählen der
- keine Umlaute besitzt
- keine Leerzeichen oder sonstige Sonderzeichen enthält
- klein geschrieben ist und als Trennzeichen "_" benutzt
Diese Eigenschaften sorgen dafür, dass die Erreichbarkeit und die Anfälligkeit des Systems auf verschiedene Browserprobleme so gering wie möglich ist.
Bei der Erstellung sollte man direkt folgende Sachen einstellen:
- TAB Hauptbereich -> entfernen der Berechtigungen zum Verwalten und bearbeiten der Vorlagen und Anpassung des Anzeigenamen.
- TAB Konfigurieren -> Seiten Standardwerte am besten so setzen, dass die eigene Vorlage als Standard gilt und das keine Navigationsseite benutzt wird.
- TAB Konfigurieren -> Typen und Klassifizierung am besten so einstellen das Mobile Deviceseiten und anderer Schnickschnack deaktiviert ist.
- TAB Konfigurieren -> Bearbeiten Modi sollte am besten auf Grafisch gesetzt werden.
- TAB Konfigurieren -> Alle weiteren Sachen einfach deaktivieren. Später kann dann die Umschreiberegel noch eingestellt werden.
- TAB Elemente -> Elemente sollten ruhig sofort gelöscht werden und der Rich Text Editor aktiviert sein.
- TAB Zugriff -> Hier sollte anfangs zur Verwaltung nur der orcladmin User eingestellt sein oder der Account des Entwicklers. Genauere Einstellung pro Seite werden in den Vorlagen oder den Seiten selber eingestellt.
Schema für Seitengruppe anlegen (10.1.4)
Damit man für eine Seitengruppe auch ein eigenes Schema besitzt muss man dieses anlegen und mit entsprechenden Rechten versehen. Dafür am besten den Navigator aufrufen, dort auf Datenbankobjekte klicken und auf Schema klicken um eins anzulegen. Dafür sollte man entweder orcladmin sein oder als Admin mit DB-Rechten angemeldet sein.
Nun gibt man ein Schemaname und ein Passwort an worauf in der Datenbank ein entsprechendes Schema erstellt wird. Dies reicht für den Zugriff auf die Portalrelevanten Tabellen und Views noch nicht aus. Man muss nun ein Script auf dieses Schema anwenden und wodurch es die entsprechenden GRANT's bekommt.
Einloggen per putty als Oracle-User (ORACLE_HOME sollte auf das Middle-Tier gesetzt sein). An folgende Stelle navigieren und entsprechende Befehl ausführen:
oracle@server>. mid.env
~@server>cd /ORACLE_HOME/portal/admin/plsql/wwc
/ORACLE_HOME/portal/admin/plsql/wwc@Mid>sqlplus /nolog
SQL> conn portal/passwort
SQL>@provsyns.sql schemaname
Falls Zielobjekt oder Host nicht erreichbar ist kan auch die Verbindung mittels der SID hinter dem Passwort vorgenommen werden ( conn portal/passwort@SID ). Damit sollte nun das Schema entsprechende Berechtigungen besitzen. Falls der Listener nicht läuft muss dieser vorher mit
lsnrctl start
gestartet werden.
Portlets einbauen
Um nun Portlets in der Anwendung zu benutzen kann man einerseits auf die bereits vorhandenen Portlets zurückgreifen wovon das Webclipping und das Omni-Portlet mit die interessantesten darstellen.
Andererseits kann man eigene Portlets erstellen dies ist möglich über PL/SQL und Java. Beide Arten von Portlets sind je nach Einsatzbereich sinnvoller.
Während PL/SQL Portlets direkt in der Datenbank des Portals laufen und gerade Berechnungen bzw. Funktionen der Datenbank schnell zu benutzen sind, so ist der Code meist nur mit Aufwand in andere Systeme zu portieren. Auch sind große Projekte bzw. Portlets evtl. irgendwann nicht so optimal zu überschauen.
Demgegenüber sind Javaportlets portierbarer und bieten meist einen besseren Überblick bei großen Programmen. Auch kann es ausschlaggebend sein, wenn bestimmte Weboberflächen bzw. Look and Feels von Nöten sind sowie bestimmte Techniken.
Momentan werden alle Portlets von mir in PL/SQL geschrieben da weder Portierbarkeit, noch vorhandene Code aus Java imigriert werden musste, von belang war. Außerdem sind die meisten Portlets recht übersichtlich und es waren schon Grundstrukturen vorhanden.
PL/SQL Portlets - Datenbankprovider einrichten
Um nun Portlets zu benutzen benötigt man sogennante Datenbankprovider. Diese stellen für bestimmte Seitengruppen die entsprechenden Portlets sowie die Funktionen zur Verfügung. Ein solcher Provider wird als Package ähnlich der Portlets selber in der Datenbank erstellt und enthält alle Informationen über die vorhandenen Portlets. Man legt, nach dem Kompilieren in der Datenbank auch einen Eintrag im Portal an, und erstellt dort einen Eintrag im Navigator (Tabreiter Provider). Hier die möglichen Einstellungen:
Name: name_portlet_provider
Anzeigename: Name (Ausgeschrieben)
Timeout: 100 Sekunden
Timeout-Meldung: name_portlet_provider timed out.
Implementierungsstil: Datenbank
Eigentümerschema: name
Package-Name: name_portlet_provider
Anmeldehäufigkeit: Einmal pro Benutzer-Session
PL/SQL Portlets - Portlet erstellen
...
Falls ein Portlet zur Navigation oder allgemein vom Portal über Benutzer angesprochen wird, so muss es dann in der Datenbank so erstellt werden, dass der Nutzer PORTAL_PUBLIC darauf zugreifen kann. Dies schafft man mittels diesem Befehl:
GRANT EXECUTE ON schema.packagename TO PORTAL_PUBLIC;
...
Um alle Tabellen anfragen zu können und Inhalte zu testen muss man teils den Context setzen dies geschieht so:
portal.wwctx_api.set_context('orcladmin','passwort');
Abfragen des Passworts für portal
Vorher Oracle Home auf infra setzen.
%ORACLE_HOME%\bin\ldapsearch -h %OIDHOST% -p %OIDPORT% -D cn=orcladmin -w %IAS_PASSWORD% -b "cn=IAS Infrastructure Databases,cn=IAS,cn=Products,cn=OracleContext" -s sub "orclResourceName=portal" orclpasswordattribute
Umschreibregel einbauen (10.1.4)
Ersetzmuster in Oracle Portal
In Oracle Portal muss man dafür an zwei Stellen was anpassen. Die erste Einstellung sorgt dafür, dass alle Links die aufgerufen werden, entsprechend umgeschrieben werden, so dass nicht mehr /portal/page/portal erscheint. Die zweite Regel sorgt dafür, dass der Apache von intern die Umschreibung und Anfragen anpasst.
-> Navigator -> Seitengruppen -> Eigenschaften (von entsprechender Seitengruppe) -> Konfigurieren -> URL-Umschreiberegeln (ganz unten)
Dort müssen dann folgende beiden Einträge rein:
Suchmuster: /portal/page/portal/name
Ersetzmuster: /name
Redirect/Rewrite Rule Einstellungen in Apache
Hier die Einstellungen für den Apache:
Einloggen auf dem Server mittels Putty. Am besten direkt als User welcher den Applicationserver betreibt (meist portal oder oraportal). Nun muss man das Environment auf das Middle Tier setzen. Bei sorgfältig eingerichteten Systemen sollte man im Homeverzeichnis des portal/oraportal Users Dateien für ein solches Environment vorfinden. Diese heißen dann "mid.env" und man ruft sie auf mit ". mid.env" (Achtung Leerzeichen nach dem Punkt).
Ist keine Environment-Datei vorhanden muss man ORACLE_HOME selber auf das Verzeichnis des Middle-Tier setzen.
Danach muss man die httpd.conf des Apache (vom Middle-Tier) anpassen und folgende Zeile hinzufügen:
RewriteRule ^/name(.*)$ /portal/page/portal/name$1 [PT]
Für https rewriting folgendes (dabei darauf achten, falls eine Adresse mehrfach angepasst wird wird immer das ursprungsmuster benutzt):
RewriteEngine On
RewriteOptions inherit
RewriteRule ^/kundenportal(.*)$ /portal/page/portal/kundenportal$1 [PT]
RewriteCond %{SERVER_PORT} !443
RewriteRule ^/portal/page/portal/kundenportal(.*)$ https://www.xmasman.de/kundenportal$1 [R]
Nun muss der Apache noch die Configuration neu einlesen:
dcmctl updateconfig -ct ohs -d -v
Und dann noch den Apache über opmn neu starten:
opmnctl stopproc process-type=HTTP_Server
opmnctl startproc process-type=HTTP_Server
Jetzt sollte die Adresse im Browser gehen. Falls es Probleme gibt evtl. Cache auf Serverseite löschen und eigenen Browser auch den Cache löschen.
Starten und Stoppen des Application Server
Um den Application Server zu starten für das Portal muss man mehrere Sachen beachten. Erstmal benötigt man dafür ein sog. Infra-Tier und ein Middle-Tier. Auf dem Infra-Tier läuft die Datenbank und mehrere grundlegende Funktionen. Auf dem Middle-Tier läuft das Portal.
Um die beiden Instanzen zu starten und zu stoppen legt man sich am besten Shellscripte an. Dies könnten dann zum Beispiel die Namen "infra.env" und "mid.env" heißen. Wenn man nun diese benutzt bzw. den Server startet oder stoppt, muss man als der User am System angemeldet sein, welcher für die Oracle Prozesse zuständig ist. Dieser heißt dann meistens oraportal oder oracle. Inhalt einer infra.env könnte dann so aussehen:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs export NLS_LANG=German_Germany.AL32UTF8 export ORACLE_BASE=/as10gr2 export ORACLE_HOME=$ORACLE_BASE/infra export ORACLE_SID=asdb export ORACLE_HOSTNAME=portal.mt-ag.com export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib:$ORACLE_HOME/jre/1.4.2/lib/i386/server:$ORACLE_HOME/jre/1.4.2/lib/i386/native_threads:$ORACLE_HOME/perl/lib/site_perl/5.6.1/i686-linux:/usr/lib:/usr/X11R6/lib export PATH=$ORACLE_HOME/dcm/bin:$ORACLE_HOME/bin:.:$ORACLE_HOME/ldap/odi/bin:$ORACLE_HOME/perl/bin:.:$PATH:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/jdk/bin export DISPLAY=:13.0
unset USERNAME umask 022 export PS1="\w"'@Infra> ' set -o emacs
alias b='cd $ORACLE_BASE' alias o='cd $ORACLE_HOME' alias n='cd $ORACLE_HOME/network/admin' alias a='cd $ORACLE_HOME/Apache/Apache'
Diese Datei beinhaltet Angaben zum Homeverzeichnis, SID, Hostname und verschiedene Pfadangaben. Aktivieren kann man diese mittels console über den Befehl ". infra.env". Analog dazu die mid.env.
# .bash_profile # Get the aliases and functions
if [ -f ~/.bashrc ]; then . ~/.bashrc fi
# User specific environment and startup programs export NLS_LANG=German_Germany.AL32UTF8 export ORACLE_BASE=/as10gr2 export ORACLE_HOME=$ORACLE_BASE/mid export ORACLE_SID=asdb export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib:$ORACLE_HOME/jre/1.4.2/lib/i386/server:$ORACLE_HOME/jre/1.4.2/lib/i386/native_threads:$ORACLE_HOME/perl/lib/site_perl/5.6.1/i686-linux:/usr/lib:/usr/X11R6/lib export PATH=$ORACLE_HOME/dcm/bin:$ORACLE_HOME/bin:.:$ORACLE_HOME/ldap/odi/bin:$ORACLE_HOME/perl/bin:.:$PATH:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/jdk/bin
export DISPLAY=:13.0
unset USERNAME umask 022 export PS1="\w"'@Mid> ' set -o emacs
alias b='cd $ORACLE_BASE' alias o='cd $ORACLE_HOME' alias n='cd $ORACLE_HOME/network/admin' alias a='cd $ORACLE_HOME/Apache/Apache'
Enterprise Manager
Um verschiedene Einstellungen zu tätigen oder sachen zu deployen benötigt man den Enterprise Manager. Diesen startet man mit im Middle-Tier Environment für den Application Server und im Infra-Tier für die Datenbank. Bei entsprechend gesetzten Umgebungsvariablen wird er so aufgerufen:
emctl start iasconsole
Einloggen kann man sich per ias_admin und dem entsprechenden Passwort.
emctl stop iasconsole
Beispiele
Ausgabe aller Textitems aus einer Region einer bestimmten Seitengruppe
DECLARE
Cursor items is
SELECT
i.id
,i.display_name
,i.description
,i.publish_date
FROM portal.WWSBR_ALL_ITEMS i
WHERE i.caid = <id der Seitengruppe>
AND i.itemtype = 'basetext'
AND i.folder_id = <id der Seite>
AND i.folder_region_id = <id der Region>
ORDER BY sequence;
item items%ROWTYPE;
BEGIN
portal.WWCTX_API.set_context('orcladmin', passwort);
for item in items loop htp.p(item.display_name); end loop; END;
HTML Vorlagen (Page Skin / Item Skin)
Hier gibts 2 Wege solche zu definieren:
- Definition ab Oracle Portal 10g2 über Bereich HTML-Vorlagen direkt im Navigator
- Definition über Provider: Provider > Lokal erstellte Provider > Gemeinsame Komponenten > Benutzeroberflächen-Vorlagen
Referenzieren von URLs/PageId in Portlets
Im Portlet Provider in der Prozedur:
procedure show_portlet (p_portlet_record in out wwpro_api_provider.portlet_runtime_record)
Abfrage der URL
im builder übergeben:
p_portlet_record in wwpro_api_provider.portlet_runtime_record
danach dort mittels
p_portlet_record.page_url
abfragen. Diesen dann mit der general_func auf die pageid gehen
xxx_general_func.get_page_id(p_url => p_portlet_record.page_url)
.
