Oracle Fusion Middleware Blog

Deutsche Informationen rund um Oracle Fusion Middleware

Posts Tagged ‘ADF

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>

Advertisements

Written by fmtechteam

12/11/2015 at 13:33

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

Tagged with ,

Generierung von REST Clients mit verschiedenen IDEs (JDeveloper, Eclipse, NetBeans)

leave a comment »

In der Welt mobiler Anwendungen erfolgt der Zugriff auf Daten und Funktionen im Backend zumeist über RESTful Services, die die Nachrichten im kompakten JSON-Format austauschen. Im Gegensatz zu SOAP-Services, bei denen sich die WSDL-Beschreibung als Standard durchgesetzt hat, gibt es für RESTful Services mit JSON noch keinen etablierten Standard. Erste Ansätze existieren mit WADL (Web Application Description Language) und RAML (RESTful API Modeling Language).
Wie können nun die verschiedenen IDEs im Oracle-Umfeld mit existierenden REST/JSON-Services umgehen und aus den zur Verfügung stehenden Informationen einen REST-Client generieren, der beispielsweise anschließend in einer mobilen Anwendung verwendet werden kann, um mit dem REST Service zu kommunizieren. Für die Entwicklung der mobilen Anwendungen soll das Oracle Mobile Application Framework (MAF) eingesetzt werden.

Oracle JDeveloper 12.1.3

Sofern der REST Service die Nachrichten im XML-Format austauscht und dafür ein XSD Schema existiert, kann der Web Service Data Control Wizard im JDeveloper verwendet werden, um ein Data Control für den Web Service zu generieren. Sollen die Daten dagegen im JSON-Format ausgetauscht werden, muss der Client unter Verwendung des REST Service Adapters manuell in Java programmiert werden. Anschließend kann aus dem Service Object ein POJO Data Control generiert werden. Dieses Vorgehen ist ausführlich in einem Tutorial auf OTN beschrieben.

Oracle Enterprise Pack for Eclipse 12.1.3.4 (OEPE)

Alternativ zum Oracle JDeveloper kann auch OEPE eingesetzt werden, um mobile Applikationen auf Basis des Oracle Mobile Application Frameworks (MAF) zu entwickeln. In OEPE gibt es einen REST Service Editor, der auch für REST-JSON Services die notwendigen Artefakte automatisch generiert, ohne dass es eine Beschreibung des RESTful Services gibt.
Dazu praktiziert der Wizard einen interessanten Ansatz:

  • Im ersten Schritt (Tab REST Client) wird zunächst der Service „erforscht“, indem der Service wiederholt unter Angabe der URL, von Header-Informationen und Query Parametern aufgerufen wird und die Ergebnisse angeschaut werden. In dieser Phase werden keine Ergebnisse gespeichert.
  • Hat man die Struktur verstanden, kann mit Hilfe der Funktion „Import the REST Client Information“ eine erste Beschreibung des Service im XMI-Format (XML Model Interchange) erstellt werden. Diese wird im Tab REST API sicht- und editierbar. Alle Änderungen werden unmittelbar in der XMI-Beschreibung persistiert.
  • Im letzten Schritt „Artifact Generation“ wird aus der XMI-Beschreibung des Service ein Java Client generiert.
    Aus dem Service Object kann anschließend wie im JDeveloper ein POJO Data Control erzeugt werden.
OEPE REST Service Editor

OEPE REST Service Editor

Dieses Vorgehen ist in zwei Blog Posts ausführlich beschrieben:
https://blogs.oracle.com/oepe/entry/introduction_to_rest_service_editor
https://blogs.oracle.com/oepe/entry/introduction_to_the_rest_service

NetBeans 8.0.2

Im Unterschied zu den zwei vorhergehenden IDEs können mit NetBeans keine mobilen Applikationen auf Basis von Oracle MAF erstellt werden. Trotzdem war es interessant, die Möglichkeiten von NetBeans zu erkunden.
Wurden die REST Services mit NetBeans z.B. als annotierte Java-Klassen erstellt, kann ein REST Service Client dafür generiert werden. NetBeans bietet nach der Installation eine Reihe populärer Services (von Amazon, Delicious, Flickr, Google, ..) an, die jeweils durch eine WADL-Datei beschrieben sind.

NetBeans - Services

NetBeans – Services

Hier können eigene Services (SOAP oder REST) hinzugefügt werden, zu denen eine WSDL- oder WADL-Datei angegeben werden muss. Ist eine WADL-Datei für den Service hinterlegt kann anschließend mit Hilfe des RESTful Java Client Wizard der client-seitige Code generiert werden.
Das Vorgehen ist in diesem Tutorial und in diesem Video beschrieben.
Fehlt eine WADL-Beschreibung des Service müsste man diese vorab erstellen. Dieses Wiki beschreibt einige mögliche Ansätze und Werkzeuge zur Generierung einer WADL-Datei.

<JM>

Written by fmtechteam

13/04/2015 at 15:00

Hierarchische Darstellung (Tree Controls) in ADF Faces 11g

leave a comment »

In ADF Faces 11g gibt es zwei Komponenten, mit denen man hierarchisch strukturierte Daten als Baumstruktur darstellen kann. Ich habe beide Komponenten getestet und möchte die Ergebnisse kurz zusammenstellen.

  1. Tree-Komponente (af:tree)
    Sie eignet sich gut zur Navigation, zum Beispiel in einem speziellen Layout-Bereich. Die Knoten können zu- und aufgeklappt werden, aber die Fokussierung auf eine ausgewählte Zeile ist nicht möglich. Die Implementierung ist, geeignete Datenstrukturen vorausgesetzt, ist sehr einfach. Eine Synchronisierung zwischen der ausgewählten Zeile und einer Detaildarstellung der Daten als Tabelle oder Form ist möglich. Eine gute Anleitung findet man hier.

    Komponente af:tree

    Komponente af:tree

  2. Tree Table-Komponente (af:treeTable)
    Diese Komponente ähnelt einer ADF Table und eignet sich zur übersichtlichen Darstellung von hierchisch strukturierten Daten. Die Knoten können zu- und aufgeklappt werden, auch die Fokussierung auf eine ausgewählte Zeile ist möglich. Die Implementierung ist identisch wie bei der Komponente af:tree. Allerdings kann man nach dem Anlegen der Komponente der Tabelle weitere Spalten hinzufügen, indem aus der Component Palette des JDeveloper die Komponente af:column der Tabelle beliebig oft hinzugefügt wird. Anschließend können Attribute in die noch leeren Spalten gezogen werden. Das Binding dieser Attribute muss so geändert werden, dass es sich auf den ausgewählten Knoten der Hierarchie bezieht (#{node.<attribut>}. Benutzt man den Expression Builder ist die Code Completion bei der Auswahl hilfreich.

    Komponente af:treeTable

    Komponente af:treeTable

Eine statische Überschrift pro Knotenzeile kann man hinzufügen, indem man die entsprechende af:column auswählt und den Text im Property HeaderText einfügt.

Will man Zwischensummen pro Knoten der Hierarchie bilden, so gibt es dafür mehrere Möglichkeiten (siehe Kapitel 9 im Buch „Oracle Fusion Developer Guide – Building Rich Internet Applicatgions with Oracle ADF Business Components and Oracle ADF Faces“ von Frank Nimphius und Lynn Munsinger).
Eine sehr elegante Möglichkeit besteht darin, zwei Komponenten af:outputText in eine af:column zu packen:

<af:column id=“c6“>
<af:outputText value=“#{node.sumValue}” id=”ot9” inlineStyle=”font-weight:bold;”/>
<af:outputText value=“#{node. Value}” id=”ot7” inlineStyle=”text-align:right;”/>
</af:column>

Durch das Rendering der Tree Table (Stamping Behaviour) wird erreicht, dass pro Zeile nur der verfügbare Wert angezeigt wird, d.h. in einer Detailzeile der Wert Value und in der Knotenzeile der Hierarchie die Summe sumValue.

Eine ausführliche Beschreibung der Funktionsweise beider Komponenten findet man im Fusion Developer’s Guide ADF 11g. Sehr hilfreich ist auch der Blog-Eintrag von Andrejus Baranovski.
<JM>

Written by fmtechteam

09/04/2010 at 15:13

Veröffentlicht in ADF, Jürgen Menge

Tagged with ,