Oracle Fusion Middleware Blog

Deutsche Informationen rund um Oracle Fusion Middleware

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>

Written by fmtechteam

04/07/2016 at 10:47

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

How to use BAM 12.2.1 Web Services in a composite application

leave a comment »

Using the following link you can download a document that describes how to use Oracle Business Activity Monitoring (Oracle BAM) Web Services (DOOperations) to build a composite application that publish data to the Oracle BAM Server for use in dashboards: description of how to build a composite application using Oracle BAM WS

<Kersten Mebus>

Written by fmtechteam

15/06/2016 at 15:37

Veröffentlicht in BAM, Kersten Mebus, SOA

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

Nachdem sich der Staub gelegt hat – Oracle Forms 12c

leave a comment »

Im Oktober 2015 ist das neue Release 12c von Oracle Forms und Reports erschienen (12.2.1). Es ist Zeit für eine Zusammenfassung der wichtigsten Neuerungen und Erfahrungen.
Die wesentlichen Neuerungen sind im Forms Services Deployment Guide beschrieben.

Für das Deployment auf dem Client (Desktop) gibt es jetzt 4 Optionen:

  • Java Applet im Browser (wie in den bisherigen Versionen)
  • JNLP eingebettet in HTML
  • Java WebStart
  • Standalone (Forms Standalone Launcher)

Dies ist deshalb wichtig, weil die meisten Browser künftig das Netscape API (NPAPI) zur Integration von Java und Flash über Plug-Ins nicht mehr unterstützen werden.

Die Installation von Oracle Forms und Reports 12c erfordert die Fusion Middleware Infrastruktur und damit eine Datenbank zur Speicherung von Schema-Informationen. Die notwendigen Schemata werden mit Hilfe des Repository Creation Utility (RCU) angelegt und speichern unter anderem Informationen zur Authentifizierung (Oracle Platform Security Services).
Hier bei ist zu beachten, dass die Lizenzen für die Internet Developer Suite, den Internet Application Server (Enterprise Edition) und die WebLogic Server Suite eine limitierte Lizenz für die Nutzung der Datenbank enthalten. Lediglich für die Lizenz „Forms and Reports“ ist eine zusätzliche Datenbank-Lizenz erforderlich. Kunden können dafür eine bereits lizensierte Datenbank nutzen oder müssen eine zusätzliche Lizenz erwerben.

Neben der offiziellen Dokumentation zur Installation gibt es zwei Installationsbeschreibungen für Forms und Reports 12c in deutscher Sprache:

Nicht vergessen sollte man die Tatsache, dass in den Release Notes von 12.2.1 Oracle Reports als „deprecated“ gekennzeichnet wurde. Anwender von Oracle Reports sollten sich daher rechtzeitig Gedanken machen, wie bestehende Oracle Reports-Anwendungen abgelöst werden können. Oracle Forms 12c bietet als Alternative die native Integration des Oracle BI Publisher an.

<JM>

Written by fmtechteam

23/03/2016 at 16:12

Installation des Oracle BI Publisher 12c

leave a comment »

Der Post beschreibt in kurzer Form die Installation des Oracle BI Publisher 12c (12.2.1) im Standalone-Modus, d.h. ohne weitere Komponenten der Oracle BI Suite. Dies ist dann sinnvoll, wenn der BI Publisher als Reporting-Lösung in Verbindung mit Anwendungen (z.B. Oracle Forms, Oracle ADF) eingesetzt werden soll. Die folgende Beschreibung setzt Kenntnisse des Oracle BI Publisher voraus. Neueinsteigern wird empfohlen, sich zunächst auf den BI Publisher zu informieren und danach die offizielle Dokumentation zu Rate zu ziehen.

Installationsprozess

Der Installationsprozess folgt dem allgemeingültigen Vorgehen bei der Installation von Komponenten der Oracle Fusion Middleware 12c.

  1. Benötigt wird auf dem Rechner ein aktuelles 64-bit JDK (Version 8).
  2. Im ersten Schritt wird die WebLogic Server Infrastructure 12.2.1 installiert. Die verwendete Java-Version muss auf das JDK 8 verweisen.
  3. Im nächsten Schritt werden die benötigten Software-Komponenten in ein Oracle Home installiert. Wenn man später die zahlreichen Beispiel-Reports nutzen will, sollte man bei der Auswahl der zu installierenden Komponenten die Option „BI Platform with Samples“ auswählen.
  4. Im dritten Schritt erfolgt die Konfiguration des BI Publishers, d.h. die WLS Domain wird einschließlich der Server und ihrer Konfiguration erzeugt. Entsprechen die Ergebnisse nicht den Wünschen, kann dieser Schritt wiederholt werden, indem die Domain komplett gelöscht und neu erzeugt wird.
    Während der Konfiguration müssen in einer Repository-Datenbank mehrere Schemata erzeugt werden. Dies kann man mit Hilfe des Repository Creation Utility (RCU) entweder vor dem Aufruf der Konfiguration oder innerhalb des Konfigurationsprozesses tun. Das Utility RCU kann aus dem Verzeichnis $ORACLE_HOME/oracle_common/bin aufgerufen werden.
    Will man später die Beispiel-Reports nutzen, muss während der Konfiguration die „Sample App Lite“ ausgewählt werden.

Ergebnisse der Installation

Im Ergebnis der Installation werden der Node Manager, der WLS Admin Server und Managed Server angelegt. Als Security-Modell ist „FMW Security“ voreingestellt. Eine erste Anmeldung ist mit den Daten des Administrators möglich.

Nacharbeiten und Besonderheiten der Version 12c

  1. Zunächst empfiehlt sich die Einrichtung eines Super Users im Security Tab des BI Publishers, der unabhängig von den verschiedenen Security-Modellen für die Anmeldung genutzt werden kann.
    Stellt man danach das Security-Modell auf „BI Publisher“ um, können nach einem Restart des Servers Benutzer direkt über das User Interface des BI Publisher eingerichtet werden.
  2. Es fällt auf, dass der Speicherort des BI Publisher Repositories nicht mehr über das User Interface geändert werden kann. Auch eine Trennung zwischen dem Reports- und dem Admin-Teil des Repositories ist so nicht mehr möglich.
    Will man dennoch das Repository an einem anderen Speicherort verwenden, so kann man dies in der Datei
    $DOMAIN_HOME/config/fmwconfig/bienv/core/bi-environment.xml
    durch die Änderung des Parameters <bi:singleton-data-directory> erreichen (siehe http://docs.oracle.com/middleware/1221/biee/BIESG/cluster.htm#BIESG9273).
    Wird diese Datei nicht gefunden, können folgende JVM-Parameter (z.B. in der setDomainEnv.sh) gesetzt werden:

    DXDO_FONT_DIR={path_to_font_directory}/fonts
    Dxdo.server.config.dir={path_to_bip_repository}
    Dxdo.server.resource.type=file
    Dxdo.obischema=false

    Ich habe eine relativ einfache Lösung durch die Verwendung von symbolischen Links gewählt und konnte damit auch Reports- und Admin-Teil des Repositories voneinander trennen.

<JM>

Written by fmtechteam

13/01/2016 at 21:02

JDeveloper 12c, ADF und die Datenbank-Abhängigkeiten

leave a comment »

Bei der Entwicklung und dem Deployment von ADF-Applikationen stößt man immer wieder auf das Thema, dass es zwingende Abhängigkeiten zur Datenbank gibt. Im JDeveloper 12.1.x und 12.2.x wird beim Start des eingebetteten WebLogic Servers zugleich eine Derby Database gestartet, die auf den Port 1527 horcht. Die Derby Database ist ein Teil der WebLogic Server-Installation. Im Blog Post Derby DB lässt sich nicht starten .. wird beschrieben, wie man das Problem lösen kann, das durch fehlende Rechte (Java Policy) beim Start entsteht. Allerdings ist es auch möglich, den Start gänzlich zu unterdrücken, indem man in der Datei setDomainEnv.sh des eingebetteten WebLogic Servers nach dem String „DERBY_FLAG“ sucht und die entsprechende if-Schleife komplett auskommentiert. Man findet diese Datei im Verzeichnis DefaultDomain/bin unter dem Systemverzeichnis des installierten JDevelopers.

Eine weitere Abhängigkeit zu einer Datenbank besteht beim Deployment von ADF-Applikationen in der Version 12c.  Die Abhängigkeit betrifft in diesem Fall die Fusion Middleware Infrastruktur, konkret die Oracle Platform Security Services (OPSS). Sie benötigen für den Betrieb im Cluster eine Datenbank, die beim Anlegen einer JRF (Java Require Files) Extended Domain zwingend erforderlich ist. Die Certification Matrix für das jeweilige Release der Fusion Middleware 12c gibt an, welche Datenbanken und welche Versionen dafür zum Einsatz kommen können.

Duncan Mills hat in seinem Blog Setting up a standalone WebLogic 12c install for ADF Without a Database  beschrieben, wie man diese Anforderung in einer Entwicklungs- oder Test-Umgebung umgehen kann.
Mit dem neuen Release 12.2.1 der Oracle Fusion Middleware ist es nun möglich, eine sogenannte Restricted JRF Domain anzulegen, die keine Abhängigkeit mehr zu einer Datenbank für OPSS aufweist.

<JM>

Written by fmtechteam

12/11/2015 at 13:33

Veröffentlicht in ADF, Appserver, Jürgen Menge

Tagged with ,

Dem Android Emulator unter Linux Beine machen

leave a comment »

Die Langsamkeit des Android Emulators beim Testen von Apps ist bekannt und kostet dem Entwickler Zeit und Nerven. Neben dem Projekt Genymotion, das eine virtuelle Maschine mit Android unter VirtualBox bereitstellt, gibt es Möglichkeiten, die Arbeit des Emulators unter MS Windows bzw. Linux zu beschleunigen.
Hier kurz eine Beschreibung der notwendigen Schritte, um unter Ubuntu eine signifikant schnellere Arbeitsweise des Emulators zu erreichen:

  • Dazu muss der Prozessor der Maschine Hardware Virtualization unterstützen und diese im BIOS aktiviert sein.
    Zur Überprüfung das folgende Kommando ausführen:
    egrep -c ‘(vmx|svm)’ /proc/cpuinfo
    Das Ergebnis muss eine Zahl sein, die größer als 0 ist.
  • Die folgenden Packages müssen installiert werden:
    qemu-kvm, libvirt-bin, ubuntu-vm-builder, bridge-utils
  • Der aktuelle Benutzer muss den Gruppen kvm und libvirtd hinzugefügt werden.
  • Im Android SDK die System Images für Intel x86 Atom installieren:

Android SDK

  • Eine virtuelle Maschine (AVD) auf Basis des Intel Atom System Image definieren und starten.

Intel Atom AVD

Es gibt eine wesentliche Einschränkung zu beachten:
Es können nicht zwei Anwendungen gleichzeitig laufen, die KVM nutzen. So können beispielsweise nicht VirtualBox und eine Android AVD auf Basis des Intel Atom System Image gleichzeitig laufen.

<JM>

Written by fmtechteam

21/09/2015 at 21:17

Folgen

Erhalte jeden neuen Beitrag in deinen Posteingang.