Oracle Fusion Middleware Blog

Deutsche Informationen rund um Oracle Fusion Middleware

Archive for the ‘Detlef Müller’ Category

CORS in JavaScript – Http Header auslesen

leave a comment »

Bei der Integration von REST oder anderen Servicequellen in JavaScript Anwendungen gibt es ein Problem im Umgang mit den Browser Sicherheitsmechanismen für JS. Nicht dass damit gemeint ist, dass JS unsicher wäre. Nein, im Gegenteil. Die Sicherheitsmechanismen der Browser verhindern den Zugriff auf andere als die angeforderte Quellen. Somit will man das Einschleusen fremder, potenziell sicherheitsgefährdender Inhalte in Webseiten über JavaScript verhindern. Das Problem ist nur, dass Datendienste, die man in seine JS Anwendung integrieren möchte, naturgemäß durch solche „fremden“ Quellen bereitgestellt werden. Es gibt als aus Sicht des Browsers zwei verschiedene Quellen, die angefragt und deren Inhalte über JS Code im Browser zusammegeführt werden sollen. Das ist dem Browser suspekt und die Sicherheitsmechanismen schlagen hier also zu. Das bedeutet, dass der Browser ohne weiteres Zutun eine clientseitige Einbindung solcher Services nicht ermöglicht. Um einen Lösungsweg für diesen Konflikt zu finden, hat man das Konzept des sogenannten „Cros Origin Request“ geschaffen (CORS = Cross Origin Request Support – Detail siehe hier). Das heißt der Service Endpoint muß explizit dem Browser die Verwendung des Server Response in fremden, domainübergreifenden Anwendungen erlauben. Das erfolgt über einen HTTP Response Header Parameter „Access-Control-Allow-Origin“, der die Domänengültigkeit des Service Response festlegt.

Bevor man nun anfängt, einen entsprechenden REST Service in seine JS Anwendung per JQuery o.ä. einzubinden, sollte man vielleicht vorher kurz überprüfen, ob serverseitig CORS unterstützt wird. Dazu schaut man in den HTTP Response Header, ob und wie der Parameter Access-Control-Allow-Origin gesetzt ist. Es reicht nicht, sich über ein Browser Plugin (z.B. Live Headers für Firefox, oder in den Developer Tools für Google Chrome) oder einen curl Aufruf etc. den Header anzuschauen. Browser, die CORS unterstützen, führen einen preflight request aus, um serverseitig zu überprüfen, ob sie den Response domänenfremd verarbeiten dürfen. Man muss sich also den preflight request mit anschauen und den HTTP Header Parameter dort suchen. Wie kommt man nun an den HTTP Header für diese Requestphase ran?

Dazu öffnet man am besten Google Chrome, geht auf die Seite http://api.jquery.com und öffnet mit Ctrl + Shift + I die Developer Tools. Dort wählt man „Console“ aus und ruft darin die gewünschte URL mit der $.get Methode auf, zum Beispiel $.get(„http://www.openligadb.de/api/getmatchdata/EM-2016/2016 „).

Anschließend schaut man in den Developer Tools auf den Network Traffic und sieht sich . Dort steht dann, ob und wie der Server CORS unterstützt. In diesem Falle gibt es serverseitig keine Einwände, die API in anderen Domänen zu verarbeiten.die Header für den Request der Service API an

<DM>

Advertisements

Written by fmtechteam

04/07/2016 at 10:47

Veröffentlicht in Detlef Müller, NodeJS, OracleJET

NodeJS Beispiel für Application Container Cloud Service

leave a comment »

In diesem Blog Post möchte ich ein Beispiel zeigen, wie man eine NodeJS Anwendung auf dem Application Container Cloud Service bereitstellt. Nehmen wir ein einfaches Beispiel für eine Message Board Anwendung, wie sie in der Samples Bibliothek von NetBeans zu finden ist.

Voraussetzungen

  • NetBeans Installation inklusive Google Chrome und NetBeans Plugin zum Debuggen
  • Lokale NodeJS Installation zum Testen
  • Zugang zu einer Oracle Application Container Cloud Instanz (ACCS)

Entwicklung der Demoanwendung

Die NodeJS Anwendung ist ein Message Board, auf dem man Texte posten kann. Diese Anwendung verwendet weitere JS Frameworks, wie Express (serverseitige Webanwendung auf Basis NodeJS), Jade (UI Template Framework), Knockout (Data Binding ins UI) sowie Bower (Paket Manager) und sieht im Browser in etwa so aus.

Im Folgenden wird die Anwendung erst einmal entwickelt.

  • Starte NetBeans und erstelle ein neues Projekt
  • Wähle Kategorie Samples – HTML5/JavaScript – Express/Jade Messages Sample
  • Gib der Anwendung einen Namen (z.B. MessagesExpress) und beende den Wizard
  • Die Anwendung referenziert NodeJS Module, die aber noch in die Anwendung geladen werden müssen. Daher weist NetBeans offene Probleme aus und kennzeichnet das Projekt rot. Löse die Projektfehler durch rechten Mausklick auf das Projekt und wähle Resolve Project Problems
  • Wähle die erste Meldung aus und klicke auf Resolve. Wiederholde den Vorgang für die verbleibende Meldung. Schließe nun das Fenster.
  • Die Anwendung ist nun fertig und kann lokal getestet werden. Klicke mit der rechten Maustaste auf den Projektnamen und dann auf Run
  • Nun sollte sich der Chrome Browser mit der Anwendung öffnen

Bereitstellung der Anwendung in der Cloud

Um die Anwendung in der Cloud bereitzustellen, muss ein Manifest erstellt werden, in dem der Aufruf des Node Kommandos zum Starten der App enthalten ist. Ansonsten weiß der Container nicht, wie er die App starten soll.

  • Klicke mit der rechten Maustaste auf Sources -> New -> JSON File
  • Benenne die Datei manifest.json und klicke auf Finish
  • Ersetze den Inhalt komplett durch

{
"runtime": { "majorVersion": "0.12"},
"command": " node bin/www",
"release": {},
"notes": ""
}

  • Hinweis: Den Startbefehl für die Anwendung („command“) kann man dem Projekt entnehmen. Klicke dazu mit der rechten Maustaste auf den Projektnamen und wähle Properties-> Run
  • Da das Manifest sich im Root Verzeichnis der Anwendung befindet (bzw. befinden muss), wird hier der Eintrag für Start File relativ zum Root Verzeichnis angegeben, also statt D:\MyMobileWork\NonJDevWork\NetBeansApp\MessagesExpress\bin\www
    nur bin\www
  • Jetzt muss man nur noch auf dem Dateisystem das gesamte Projekt Zippen. Beachte dabei, dass das Packen im Root Verzeichnis der App erfolgen muss, sonst kann ACCS das Manifest im Archiv nicht finden.
  • Melde Dich nun an der Oracle Cloud an und begib Dich auf die ACCS Service Console
  • Klicke auf Create Application und Wähle den Typ „Node“ aus
  • Füll das Formular aus und wähle die Option „Upload Application Archive“
  • Wähle das oben gezipte Anwendungsarchiv und klicke auf „Create“. Die Anwendung wird nun hochgeladen und entpackt
  • Nun erfolgt automatisch das Deployment auf der Cloud, das heißt warten, bis dieser Prozess abgeschlossen ist.
  • Nach erfolgreichem Deployment ist die URL der Anwendung oben zu sehen
  • Voilà, die Anwendung steht nun auf der Cloud bereit

<DM>

Written by fmtechteam

20/04/2016 at 16:12

SAML SSO zwischen ADF Anwendungen und WebCenter Portal

leave a comment »

Hier werden die notwendigen Schritte zum Aufbau eines SAML basierten Single Sign Ons zwischen WebCenter Portal 11.1.1.8, auch als Spaces bekannt, und einer eigenen, beliebigen ADF Anwendung beschrieben. Mit anderen Worten, die abgesicherte ADF Anwendung kann seine Authentifizierung an WebCenter Portal weiter delegieren und dessen Benutzerkontext adaptieren.

Problembeschreibung

Wenn WebCenter beispielsweise um BPM Process Spaces erweitert wurde, ist in WeCcenter ein Aufgabenlisten TaskFlow verfügbar, der alle Aufgabe aus der BPM Suite anzeigt. Klickt man nun auf einen Eintrag in dieser Liste, so wird in einem Browser Pop-up Fenster die dazugehörige Task UI aufgerufen.

Picture1

Für dieses Szenario muss der Anmeldekontext von Webcenter an die ADF Anwendung übergeben werden, damit beispielsweise in der ADF Form ein Dokumentenupload als Prozessattachment in den Content Server vorgenommen werden kann. Dafür ist ein Web SSO zwischen Webcenter Portal und der ADF Anwendung nötig. Die empfohlene Vorgehensweise ist eine Einbeziehung beider Anwendungen in ein unternehmensweites SSO. Was macht man nun, wenn aber ein solches nicht vorhanden ist? Hier besteht die Möglichkeit, ein minimalistisches SSO auf der Basis von SAML aufzusetzen. Diese Lösung weist einige Einschränkungen auf (z.B. kein globales Single Sign Off), ist aber eine gültige Vorgehensweise und wird auch von WebCenter 11.1.1.8 weiterhin unterstützt. Der WebCenter Portal Admin Guide dokumentiert das Setup dazu im Kapitel 33 (siehe hier).

Lösung

Vorbemerkungen

Der hier beschriebene Lösungsweg berücksichtig SAML v1.1. aufgrund der durch WebCenter bereitgestellten Scripte. Nach jetzigem Stand wird SAML 2.0 mit WebCenter 12g unterstützt (unverbindlich). Wie bereits erwähnt, ist kein globales Single Sign Off in SAML v1.1. möglich. Das bedeutet, dass nach einer Abmeldung und Wiederanmeldung an WebCenter innerhalb der aktuellen Browsersession mit einem anderen Benutzernamen der vorherige Benutzerkontext für die ADF Anwendung beibehalten wird. Der Anwender muss also alle Browserfenster der Sitzung komplett beenden.

Es wird in der hier aufgezeigten Herangehensweise  keine SSL Verschlüsselung, wie im Normalfall bei Anmeldefenstern üblich, berücksichtigt, da nur der allgemeine Lösungsweg an einem einfachen Beispiel skizziert wird.

Als Voraussetzung muss natürlich WebCenter Portal korrekt installiert und konfiguriert sein. Der im Beispiel verwendete Weblogic Server für die eigene ADF Anwendung ist mit dem WebCenter Server in einer gemeinsamen Weblogic Domäne installiert. Eine BPM Suite Installation ist in diesem Fall nicht notwendig, da hier lediglich das Zusammenspiel zwischen der eigenen ADF Anwendung und WebCenter Portal im Fokus liegt. Die BPM Suite dient nur zur Veranschaulichung der Aufgabe.

Namenskonvention für das Beispiel

Hier sind die im Beispiel verwendeten Namen  und Pfade. Diese Werte müsssen natürlich für die eigene Umgebung angepasst werden.

  • Hostname = owc.vm.oracle.com
  • SAML Source Site = für die Anmeldung verantwortliche Anwendung = WebCenter Portal
  • SAML Destination Site = Zielanwendung, die die Authentifizierung von der Source Site übernehmen soll = eigene ADF Anwendung
  • SAMLAPP = Name der eigenen ADF Anwendung , Context root = /samlapp
  • Oracle Fusion Middleware Basisverzeichnis /oracle/fmw/
  • WLS Domäne
  • Name = dot8
  • Verzeichnis = /oracle/fmw/user_projects/domains/dot8
  • Weblogic Servernamen
  • WC_Spaces auf Port 8888 für WebCenter Portal
  • CustomApp auf Port 8100 für eigene ADF App (SAMLAPP)
  • Oracle HTTP Server wurde hier verwendet, ist aber nicht zwingend notwendig. WebCenter hört daher in diesem Falle auf Port 80
  • JDK installiert in /usr/java/jdk1.7.0_55
  • Domain Admin Account lautet weblogic/welcome1 (wird für wlst Anmeldung verwendet)

Aufsetzen des Managed Servers für ADF Anwendung

  1. Erstelle einen neuen WLS Server „CustomApp“ in der Domäne für Port 8100 über WLS Console
  2. Füge ADF Runtime über die EM Website hinzu
    • Wähle den neuen Managed Server in EM Website aus
    • Schalter “Apply JRF Template” wird sichtbar. Durch Anklicken werden alle notwendigen Bibliotheken dem Server zugewiesen

SAML 1.1 Konfiguration der Server

Zunächst sollte ein neuer Schlüssel im Standard Keystore DemoIdentity erstellt und anschließend in eine Zertifikatsdatei exportiert werden. Diese Zertifikatsdatei wird später in der Konfigurationsdatei wcsamlsso.properties referenziert

  1. Identifiziere in der WLS Konsole den Speicherort des Standard Keystores.
    Picture2
  2. Öffne eine SSH Shell und navigiere zu diesem Verzeichnis
    cd /oracle/fmw/wlserver_10.3/server/lib/
  3. Füge einen neuen Schlüssel zum DemoIdentity Keystore hinzu
    /usr/java/jdk1.7.0_55/bin/keytool -genkey -keypass testkeypass 
    -keystore DemoIdentity.jks -storepass DemoIdentityKeyStorePassPhrase 
    -keyalg rsa -alias testalias
  4. Exportiere den Schlüssel in eine Datei
    /usr/java/jdk1.7.0_55/bin/keytool -export -keypass testkeypass 
    -keystore DemoIdentity.jks -storepass DemoIdentityKeyStorePassPhrase 
    -alias testalias -file testalias.der
  5. Erstelle Credential Dateien zum automatisierten Domänenlogin in wlst
    cd /oracle/fmw/user_projects/domains/dot8/config/fmwconfig
    /oracle/fmw/Oraclew_WC1/common/bin/wlst.sh
    connect('weblogic','welcome1','localhost:7001')
    storeUserConfig('spacesconfig.secure', 'spaceskey.secure')
  6. Erstelle eine Verschlüsselung für das Schlüsselpasswort
    print encrypt(obj='testkeypass', domainDir='/oracle/fmw/user_projects/domains/dot8/')
    exit()
  7. Prüfe, ob in dem Verzeichnis die Dateien ordentlich angelegt wurden
  8. Navigiere zum WebCenter Home Verzeichnis und dort ins common/bin
    cd /oracle/fmw/Oracle_WC1/common/bin/
  9. Editiere die Datei wcsamlsso.properties. Die Sektion [spaces_config] sollte in etwa so aussehen
    [spaces_config]
     configFile = /oracle/fmw/user_projects/domains/dot8/spacesconfig.secure
     keyFile = /oracle/fmw/user_projects/domains/dot8/spaceskey.secure
     adminURL = localhost:7001
     usesSSL = false
     url = http://owc.vm.oracle.com/webcenter
     serverName = WC_Spaces
     certAlias = testalias
     certPassword = {AES}0ZvXfi7zJs89AkLXg5/tQzVIAKaV0ZeGIo+oNeM64VE=)
     certPath = /oracle/fmw/wlserver_10.3/server/lib/testalias.der

    Das Certpassword entsprich dem unter Punkt 6 erstellten Schlüssel

  10. Füge folgende Zeilen am Ende der Datei hinzu
    [custom_config]
     configFile = /oracle/fmw/user_projects/domains/dot8/spacesconfig.secure
     keyFile = /oracle/fmw/user_projects/domains/dot8/spaceskey.secure
     adminURL = localhost:7001
     usesSSL = false
     serverName = CustomApp
     certAlias = testalias
     certPath = /oracle/fmw/wlserver_10.3/server/lib/testalias.der
    [samlapp_config]
     url = http://owc.vm.oracle.com:8100/samlapp

    Beachte die Leerzeile nach jeder Sektion sowie am Ende der Datei. Ansonsten wird die Sektion nicht erkannt. Die komplette Beispieldatei liegt hier

  11. Navigiere zum Verzeichnis der SAML SSO Python Scripte, die durch die WebCenter Installation bereitgestellt werden
    cd /oracle/fmw/Oracle_WC1/webcenter/scripts/samlsso/
  12. Erstelle ein neues Script für die Sektion [custom_config]
    vi configureCustomApp.py
  13. Füge den Code aus dem Anhang hinzu und speichere die Datei ab
  14. Erstelle analog dazu eine neue Python Scriptdatei für die Sektion [samlapp_config]
    vi configureSAMLApp.py
  15. Füge den Code aus dem Anhang hinzu und speichere die Datei ab
  16. Navigiere zurück zu common/bin im WebCenter Home Verzeichnis
    cd /oracle/fmw/Oracle_WC1/common/bin/
  17. Starte wlst
    ./wlst.sh
  18. Prüfe, ob die Domain gestartet ist (AdminServer, WC_Spaces) und führe dann folgenden Befehl in der wlst Konsole im Offline Modus aus.
    execfile('/oracle/fmw/Oracle_WC1/webcenter/scripts/samlsso/configureSpaces.py')
  19. Prüfe Fehler und starte dann die Domäne durch (AdminServer, WC_Spaces, CustomApp)
  20. Nun werden relying party und asserting party angelegt. Starte dazu wlst nochmal
    ./wlst.sh
  21. Führe folgenden Befehl in der wlst Konsole im Offline Modus aus
    execfile('/oracle/fmw/Oracle_WC1/webcenter/scripts/samlsso/configureCustomApp.py')
  22. Starte wlst nochmal
    ./wlst.sh
  23. Führe folgenden Befehl in der wlst Konsole im Offline Modus aus
    execfile('/oracle/fmw/Oracle_WC1/webcenter/scripts/samlsso/configureSAMLApp.py')

Das wär’s für die SAML Konfiguration auf Serverseite. Aus Sicherheitsgründen sollten alle Dateien mit Anmeldeinformationen bereinigt werden, d.h. wcsamlsso.properties, und die Credential Dateien im Domänen Konfigurationsverzeichnis wieder gelöscht werden (spacesconfig.secure, spaceskey.secure)

Erstellen der ADF Anwendung

Für die SAML SSO Authentifizierung der ADF Anwendung sind zwei Hauptkriterien zuständig

  • Einschalten der ADF Security mit CLIENT-CERT Authentifizierung
  • Definition eines eindeutigen Cookie Pfades für die Anwendung. Dieser darf nicht mit anderen Cookie Pfaden kollidieren.

Erstellen wir nun eine einfache Beispielanwendung, die lediglich den Benutzernamen ausgeben soll.

  1. Starte JDev 11.1.1.7 und erstelle eine leere generische Anwendung
  2. Wähle ADF Faces als Projekt Technologiescope aus und beende den Assistenten
  3. Rechter Mausklick auf das Projekt und wähle „Project Properties
  4. Setze den JEE Anwendungskontext auf „SAMLAPP
    clip_image044
  5. Rechter Mausklick auf das Projekt und erstelle eine neue JSF Page (WebTier ->JSF). Nenne diese “start.jspx”.
  6. Rechter Mausklick auf “start. Jspx” und wähle “Go To Page Definition”. Klicke auf “YES” und die Page Definition Datei (“startPageDef.xml”) wird erstellt. Schließe die Datei.
  7. Platziere eine panelHeader Komponente auf die JSF Page sowie eine outputText Komponente
  8. Binde den outputText Value auf “Hello User : #{securityContext.userName}“. Die Seite sollte nun in etwa so aussehen.
    clip_image046
  9. Im JDev Hauptmenu rechter Mausklick auf Application -> Secure -> Configure ADF Security
    clip_image048
  10. Wähle “ADF Authentication and Authorization” -> klicke “Next” -> wähle “HTTPS Client Authentication” -> klicke “Next” -> Akzeptiere die Vorgabewerte “No Automatic grants” -> klicke “Next” -> markiere “Redirect Upon Successful Authentication” und wähle “start.jspx” als Welcome Page -> klicke “Next” -> “Finish
  11. Öffne im Application Resource Fenster die Datei “jazn-data.xml
  12. Klicke auf “Resource Grants” und wähle ”Web Page” als “Resource Type
  13. start.jspx” sollte schon ausgewählt sein. Füge eine “Application Role” hinzu.
    clip_image050
  14. Markiere “Authenticated Role” und klicke “OK
  15. Akzeptiere die “View” Rechte und speichere alles.
  16. Öffne im Projects Fenster die Datei “web.xml”, klicke auf “Source” Ansicht und scrolle nach unten ans Ende der XML Datei
    clip_image052
  17. Dort gibt es ein login-config Attribut. Ändere den Code zu
       CLIENT-CERT,BASIC
       jazn.com
    
  18. Speicher alles
  19. Öffne im Projects Fenster die Datei “weblogic.xml”
  20. Füge folgende Zeilen the oberhalb der letzen Zeile hinzu
       /samlapp
    
    
  21. Denke daran, dass der Cookie Pfad für diese Anwendung einzig sein muss. Nutz nicht /webcenter , da dies schon durch die WebCenter portal Anwendung in Gebrauch ist. Empfehlenswert ist die Angabe des URL Context Pfades, also /samlapp beispielsweise.
  22. Speicher alles.
  23. Erstelle ein WAR Deployment Profil für das Projekt
    (rechter Mausklick auf Project -> “Project Properties” -> “Deployment” -> “New” -> Wähle “WAR File” -> gib einen Namen an -> klicke “OK” 3 mal
  24. Erstelle ein Application Deployment Profil
    (JDev Hauptmenu -> “Application” -> “Application Properties” -> “Deployment” ->”New” -> Wähle “EAR” -> gib einen Namen an (z.B. SAMLAPP) -> klicke auf “OK” -> wähle “Application Assembly” -> markiere das WAR Deployment Profil -> klicke auf “OK” zwei mal
  25. Speicher alles.
  26. Deploye die Anwendung auf den “CustomApp” Server, der zuvor erstellt und konfiguriert wurde.
    (Jdev Hauptmenu -> “Application” -> “Deploy” -> “SAMLAPP” -> “Deploy to Application Server” -> klicke “Next” -> Wähle die Appserver Connection bzw. Erstelle eine neue für die WebCenter Domain -> wähle “Deploy to selected instance” -> wähle “CustomApp” als Zielserver -> klicke “Next” -> klicke “Finish

Das war‘s. Nun kann man die Anwendungs URL (http://owc.vm.oracle.com:8100/samlapp/faces/start.jspx ) in einem Webbrowser aufrufen und man müsste zur WebCenter Anmeldeseite weitergeleitet werden. Nach erfolgreichem Login erfolgt die Weiterleitung zurück zur Startseite der SAMLAPP und der aktuelle Benutzername sollte erscheinen.

<DM>

Anhang

Bitte alle Dateien ohne Endung xls abspeichern

configureCustomApp.py

configureSAMLApp.py

wcsamlsso.properties

Written by fmtechteam

30/04/2015 at 10:26

Veröffentlicht in ADF, Detlef Müller, WebCenter

RESTful Services mit Mobile Persistence Accelerator (AMPA)

leave a comment »

Das Oracle A-Team hat jetzt eine JDeveloper Erweiterung als Open Source Framework veröffentlicht, mit der die Integration von REST Services in Oracle MAF erweitert wird. Insbesondere die Verarbeitung von JSON Daten wird hiermit stark vereinfacht. Der A-Team Mobile Persistence Accelerator, kurz AMPA, liefert einen grafischen Wizard zum Erstellen von JSON DataControls. Der Unterschied zum produktseitigen REST Service DataControl Wizard ist, dass man hiermit überhaupt nativ JSON verarbeiten, die Datenstrukturen des JSON Response erkennen lassen und etwaige Master-Detail Beziehungen definieren kann. Außerdem ist eine Offline Funktion mit eingebaut. Man kann somit ohne Netzverbindung Daten lesen und schreiben und anschließend eine Synchronisation mit dem Backend vornehmen.

AMPA ist, wie bereits genannt, kein offfizielles Oracle Produkt. Daher können Supportanfragen nur über die MAF Community geregelt werden. Warten wir es ab, inwieweit das MAF Development diese Lösung aufgreift und ins Produkt überführt.

Weitere Infos zur JDev Extension sind auf dem A-Team Blog unter http://www.ateam-oracle.com/a-team-mobile-persistence-extension-for-oracle-maf/ zu finden.

<DM>

Written by fmtechteam

14/11/2014 at 10:33

Veröffentlicht in Detlef Müller, MAF, Mobile

Probleme beim Deployment von MAF Anwendungen auf iOS

leave a comment »

Beim Deployment von MAF bzw. ADF Mobile Anwendungen wird bekanntermaßen auf XCode im Hintergund zurückgegriffen. Das heißt der Buildprozess im JDeveloper stellt aus der mobilen Applikation alle notwendigen Artefakte zu einem XCode Projekt zusammen und startet dann XCode per commmand line, um das entsprechende Target zu beliefern (entweder Installationspaket, iOS Simulator oder iOS Device).

Ein wesentliches Problem hierbei ist, dass MAF bzw JDeveloper stark von den Releasezyklen für XCode und iOS abhängt, die durch Apple vorgegeben werden. Außerdem ist die Releasefestigkeit von Apple sehr schwach, das heißt Apple nimmt zum Teil deutliche Veränderungen zwischen den Releases von XCode vor. Das erschwert natürlich alle Entwicklungspartner von Apple, ihre entsprechenden Systeme an die Apple Anwendungswelt anzupassen. Oracle ist natürlich bemüht, diese zum Teil extreme Dynamik von Apple abzufangen und MAF an die neuen Voraussetzungen schnellstens anzupassen. Dennoch kann es immer wieder zu Fehlern führen, wenn man im Buildprozess über den JDeveloper ein Deployment über XCode programmatisch auslösen möchte. Eine Möglichkeit der Lösung besteht darin, das über den JDeveloper erstellte Projekt in XCode direkt zu verarbeiten und zum Target zu liefern. Dazu sind folgende Schritte durchzuführen.

  1. Deployen der Anwendung im JDeveloper als „Distribution Package
  2. Im Filesystem Doppelklick auf das Archiv Oracle_ADFmc_Container_Template.xcodeproj im Ordner <MyApp>/deploy/iOS1/temporary_xcode_project. Xcode wird dadurch gestartet
  3. In Xcode wähle Product > Destination und dann iOS Device
  4. In Xcode wähle Product > Archive. Dadurch wird eine Archivdatei erstellt und der Organizer mit diesem Archiv aktiviert gestartet
  5. Im Organizer wähle Distribute
  6. Wähle Save for Enterprise or Ad Hoc Deployment und klicke auf Next
  7. Wähle das entsprechende Provisioning Profile, welches wahrscheinlich schon als Standard aktiviert ist, und klicke auf Export
  8. Gib den Namen und den Speicherort der IPA Datei an

Fertig!

Nun kann das Archiv entweder über iTunes oder andere Werkzeuge auf den Geräten installiert werden.

<DM>

Written by fmtechteam

28/10/2014 at 12:10

Veröffentlicht in ADF Mobile, Detlef Müller, JDeveloper, MAF, Mobile

WebCenter Content – WebDav als Laufwerk mappen

leave a comment »

Gelegentlich ist ein WebDav Zugang zum Content Server nötig, um aus Anwendungen heraus über das Filesystem des Clients Inhalte in den Content Server zu laden. Normalerweise würde man hier die Desktop Integration Suite nutzen, die eine Integration in den Windows Explorer sowie in MS Office bereitstellt.

image

Das Problem ist aber, dass nicht alle Anwendungen beim File Browsing, z.B. “Speichern unter”, auf die DIS zugreifen können. Als Beispiel sei hier mal der JDeveloper erwähnt – ohne Relevanz, ob es überhaupt Sinn macht aus dem JDeveloper in den Content Server zu speichern. Es gibt viele Anwendungen, die sich beim File Browsing wie JDeveloper verhalten.

image

In diesem Falle muss man erreichen, dass ein WebDAV Zugang als Netzlaufwerk mit Laufwerksbuchstaben ins Windows eingehängt wird. Das kann man entweder über alternative WebDav Clients oder nativ über den Windows Befehl  “net use” realisieren. Die Syntax der Befehlszeile für den Content Server lautet dann:

net use [Laufwerk]: „http://[CS Host]:[CS Port]/_dav/[CS Context]/idcplg/webdav/[Folder or Library Path]/“ /persistent:no /user: [Username Password]

Es gibt diverse Problemchen Seitens Windows im Umgang mit Basic Authentication. (Siehe KB2673544).  Bei alternativen WebDAV Clients muss man auf die korrekte WebDAV URL des Content Servers achten. Die Adresse in der DIS ist nicht die allgemeine WebDAV URL und daher etwas irreführend.

<DM>

Written by fmtechteam

08/07/2014 at 12:19

Veröffentlicht in Detlef Müller, WebCenter, WebCenter Content

Tagged with

BPM Process Spaces funktionieren nicht mehr bei eigenen Portal Erweiterungen

leave a comment »

Die Bereitstellung von eigenen TaskFlows im Webcenter Portal wird letztlich über ein fertiges JDeveloper Projekt vorgenommen, welches über die WebCenter Extensions verfügbar ist. In diesem Projekt ist ein Deplyoment Profile und ein Manifest hinterlegt, welches die Erweiterungen als Shared Library auf den Portal Server deployt.

image

Die Dokumentation hierzu ignoriert aber den möglichen Umstand, dass bereits weitere Bibliotheken in WebCenter referenziert werden, so zum Beispiel die BPM TaskFlows der Process Spaces Implementierung. Die Konsequenz daraus ist, das mit dem Erweitern des Portal um eigene TaskFows bereits bestehende Referenzen überschrieben werden und die Process Spaces nicht mehr funktionieren. In diesem Falle muss man die BPM Referenzen im Manifest zusätzlich eintragen. Das MANIFEST.MF des eigenen PortalSharedLibrary Projektes sollte dann so aussehen:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: builder
Build-Jdk: 1.6.0_20
Extension-Name: extend.spaces.webapp
Implementation-Label: 11.1.1.8.0
Implementation-Title: extend.spaces.webapp
Implementation-Vendor: Oracle
Implementation-Version: 11.1.2
Specification-Title: extend.spaces.webapp
Specification-Vendor: Oracle
Specification-Version: 11.1.1
Extension-List: bpmSpaces
bpmSpaces-Extension-Name: oracle.bpm.spaces

Nun kann man wie gewohnt seine Portal Extension deployen und behält dabei die BPM Referenzen für die Process Spaces.

<DM>

Written by fmtechteam

11/06/2014 at 16:24

Veröffentlicht in BPM, Detlef Müller, WebCenter