Posts mit dem Label workshop werden angezeigt. Alle Posts anzeigen
Posts mit dem Label workshop werden angezeigt. Alle Posts anzeigen

Mittwoch, 27. Juli 2016

Oracle SOA Cloud Service (SOACS): 12.2.1.1 Instanz anlegen

Zwischenzeitig ist auch der SOA Cloud Service (SOACS) in der Version 12.2.1.1 freigegeben worden. Dieses Tutorial ersetzt damit die Erstellung des SOACS-Teils für die Version 12.1.3.
In diesem Teil des Tutorials wird eine Instanz der Oracle SOA-Suite über den SOA Cloud Service (SOACS) aufgesetzt. Die vorherigen Teile zum Erstellen der Storage-Container und der Datenbank-Instanz sind hierfür Voraussetzung.


Los geht es in der Service Console des SOACS per 'Create Instanze'


Für die weiteren Tutorials benötigen wir einen SOA und Service Bus Cluster


Als Version wird die 12.2.1 ausgewählt.


Hier werden die Konfigurationsinformationen erfasst. Neben Compute Shape, SSH Key und Benutzername/Password wird hier die vorher angelegte Datenbank ausgewählt. Wichtig: hier werden nur Datenbanken angeboten, für die auch ein Backup konfiguriert ist. Dann benötigt der SOACS noch einen Storage Container. Der Name ist, wie auch beim Storage für die Datenbank, anzugeben im Format Storage-[Identity Domain]/[Container-Name]. In diesem Tutorial ist dies der zuvor erstellte SOACScontainer.


Zusammenfassung und weiter.


Bei Klick auf 'In Progress' gibt es detailierte Informationen über den Fortschritt


Wenn die Erstellung abgeschlossen ist, landet man per Klick auf den Instanznamen auf der jeweiligen Übersicht. Per Klick auf das Menüsymbol oben rechts gelangt man in die von der on-premise Variante bekannten Tools, alle in der 12.2 Version mit dem neuen Look&Feel:

WebLogic Console

 Enterprise Manager

SOA Composer

Worklist Application

Oracle Service Bus Console

In der Instanz-Übersicht im Bereich Administration gibt es Zugriff auf das zusätzliche Cloud-Tooling, welches es in dieser Form on-premise nicht gibt.


Neben der Konfiguration des Load Balancers, der in diesem Tutorial nicht genutzt wird, kann hier das Backup konfiguriert werden.


Hier kann ausgewählt werden, ob die Datenbank gleich mit gesichert werden soll.


Wenn das Backup erstellt ist, kann es hier direkt wieder eingespielt werden. Nützlich, falls im Laufe des Tutorials etwas schief geht.
Damit ist die SOACS Instanz für die weiteren Schritte fertig konfiguriert.

Freitag, 29. April 2016

Oracle SOA Cloud Service per SSH-Tunnel anbinden

In diesem Teil des Tutorials wird via PuTTY ein SSH-Tunnel zur im vorherigen Teil angelegten SOA Cloud Service (SOACS) Instanz aufgebaut


Hierfür wird zunächst die public IP-Adresse benötigt, die in der Service Console des zugehörigen Compute Service kopiert werden kann.


Weiter geht es in PuTTY. Auf der Einstiegseite wird die public IP-Adresse eingefügt. Hier kann die Verbindung auch für die weitere Verwendung gespeichert werden.


Unter Connection/Data wird der Username 'opc' eingetragen.


'Don't start a shell or command at all' wird unter Connection/SSH aktiviert.


Der private key wird unter Connection/SSH/Auth ausgewählt.


Schliesslich werden unter 'Tunnels' die Ports ausgewählt, die weitergeleitet werden sollen. Der Port für den Admin-Server lässt sich aus der WebLogic Console kopieren, der Zugriff ist im letzten Teil beschrieben..


 Jetzt sollte die Konfiguration gespeichert werden. Danach kann der Tunnel gestartet werden.


Danach stehen unter den lokalen Ports die entsprechenden Ports der Cloud-Instanz getunnelt zur Verfügung. Unter localhost:7001/console findet sich dann die WebLogic Console ...


... und unter localhost:7001/em das Fusion Middleware Control. Damit ist der SSH-Tunnel fertig konfiguriert.

Donnerstag, 28. April 2016

Oracle SOA Cloud Service (SOACS): Instanz anlegen

In diesem Teil des Tutorials wird eine Instanz der Oracle SOA-Suite über den SOA Cloud Service (SOACS) aufgesetzt. Die vorherigen Teile zum Erstellen der Storage-Container und der Datenbank-Instanz sind hierfür Voraussetzung.


Los geht es in der Service Console des SOACS per 'Create Instanze'


Für die weiteren Tutorials benötigen wir einen SOA Cluster


Die einzige verfügbare Version passt so.


Hier werden die Konfigurationsinformationen erfasst. Neben Compute Shape, SSH Key und Benutzername/Password wird hier die vorher angelegte Datenbank ausgewählt. Wichtig: hier werden nur Datenbanken angeboten, für die auch ein Backup konfiguriert ist. Dann benötigt der SOACS noch einen Storage Container. Der Name ist, wie auch beim Storage für die Datenbank, anzugeben im Format Storage-[Identity Domain]/[Container-Name]. In diesem Tutorial ist dies der zuvor erstellte SOACScontainer.


Zusammenfassung und weiter.


Bei Klick auf 'In Progress' gibt es detailierte Informationen über den Fortschritt


Wenn die Erstellung abgeschlossen ist, landet man per Klick auf den Instanznamen auf der jeweiligen Übersicht. Per Klick auf das Menüsymbol oben rechts gelangt man in die von der on-premise Variante bekannten Tools:

WebLogic Console

 FMW Control

SOA Composer

Worklist Application

In der Instanz-Übersicht im Bereich Administration gibt es Zugriff auf das zusätzliche Cloud-Tooling, welches es in dieser Form on-premise nicht gibt.


Neben der Konfiguration des Load Balancers, der in diesem Tutorial nicht genutzt wird, kann hier das Backup konfiguriert werden.


Hier kann ausgewählt werden, ob die Datenbank gleich mit gesichert werden soll.


Wenn das Backup erstellt ist, kann es hier direkt wieder eingespielt werden. Nützlich, falls im Laufe des Tutorials etwas schief geht.
Damit ist die SOACS Instanz für die weiteren Schritte fertig konfiguriert.

Dienstag, 24. Februar 2015

Oracle Managed Files Handson Tutorial



Dieses Tutorial soll durch die ersten Schritte mit dem neuen Oracle Managed File Transfer (MFT) helfen. Als Voraussetzung wird eine installierte SOA-Suite mit MFT benötigt, der grundsätzliche Umgang mit der SOA-Suite sollte bekannt sein. Betriebssystemseitig wurde Oracle Linux benutzt, das Ganze funktioniert aber analog auch unter Windows.

Dienstag, 10. Februar 2015

Oracle Managed File Transfer (MFT) handson - Teil 3: Custom Callouts in Java

[Teil 1] [Teil 2] [Teil 3] [Teil 4]

Über Custom Callouts in Java lässt sich die eingebaute Funktionaltität von MFT durch eigenen Code erweitern. Dabei lässt sich feingranular steuern, wann im Prozess dieser Code ausgeführt werden soll. Grundsätzlich werden drei Dinge benötigt: der eigentliche Java Code, eine XML-Datei welche MFT beschreibt, was sie mit diesem Code anfangen soll und ein WLST-Call mit dem das Callout bei MFT bekannt gemacht wird. Die komplette Dokumentation findet sich auf OTN, dieses Tutorial soll an einem simplen Beispiel das Erstellen und Einbinden von Custom Callouts demonstrieren.
In diesem Beispiel wird ein Custom Callout entwickelt, welches den Dateinamen durch die aktuelle Systemzeit ersetzt. Als Voraussetzung sollte man wissen, wie man eine Java-Klasse erstellt und übersetzt sowie den Teil 1 dieses Tutorials abgeschlossen haben.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.oracle.callout.sample;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;
import java.util.Date;

import oracle.tip.mft.engine.processsor.plugin.PluginContext;
import oracle.tip.mft.engine.processsor.plugin.PluginOutput;
import oracle.tip.mft.engine.processsor.plugin.PreCalloutPlugin;


public class FilenameCallout implements PreCalloutPlugin {

 @Override
 public boolean isPayloadChangeRequired(PluginContext context,
   Map<String, String> calloutParams) {
  return false;
 }

 @Override
 public PluginOutput process(PluginContext context, InputStream input,
   OutputStream out, Map<String, String> calloutParams) {
  String type = calloutParams.get("Type");

  return null;
 }

 @Override
 public PluginOutput process(PluginContext context, InputStream input,
   Map<String, String> calloutParams) {

  PluginOutput pOutput = new PluginOutput();
  pOutput.setNewFileName("MFT " + new Date() );
  return pOutput;
 }
}

Alle Imports bis auf java.util.Date werden für jedes Callout benötigt. Mit isPayloadChangeRequired() wird unterschieden, welche der beiden folgenden Methoden aufgerufen wird. Da in diesem Beispiel nur der Dateiname, nicht aber der Inhalt geändert wird, gibt isPayloadChangeRequired() false zurück und die zweite process() Methode wird aufgerufen. Die erste Variante wird nicht benötigt und gibt einfach null zurück.

[oracle@oel6ab src]$ javac -classpath "/home/oracle/Oracle/Middleware/soa12103/mft/modules/oracle.mft_12.1.3.0/core-12.1.1.0.jar" com/oracle/callout/sample/FilenameCallout.java 
[oracle@oel6ab src]$ jar cf FilenameCallout.jar com/oracle/callout/sample/FilenameCallout.class 
[oracle@oel6ab src]$ ll
total 12
drwxr-xr-x. 3 oracle oinstall 4096 Feb  6 15:23 com
-rw-r--r--. 1 oracle oinstall 1187 Feb  9 16:42 FilenameCallout.jar

Die Klasse wird dann einfach wie oben übersetzt, hier sind ggf. nur die Pfadnamen anzupassen. Im zweiten Schritt wird ein jar-File erzeugt, welches damit auch schon fertig ist.
Im nächsten Schritt wird die XML-Datei erzeugt, damit MFT weiss, was es mit dem JAR anfangen soll.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<mft:Callouts xmlns:mft="http://xmlns.oracle.com/mft" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://xmlns.oracle.com/mft callout.xsd ">
 <mft:Callout description="Filename conversion"
  helpText="File name conversion"
  groupName="Source-pre,Target-pre,Target-post" 
  timeout="300" 
  implementationClass="com.oracle.callout.sample.FilenameCallout"
  libraryName="FilenameCallout.jar" 
  name="Filename conversion">
 </mft:Callout>
</mft:Callouts>

Das XML-File dazu ist recht gradlinig. Wichtig ist der Name, welcher in einem MFT-System eindeutig sein muß. Die Attribute libraryName und implementationClass sind selbsterklärend.


Die beiden Dateien müssen jetzt in das mft-Verzeichnis der jeweiligen WLS-Domain kopiert werden. Falls der Unterordner callouts noch nicht vorhanden ist, wird er manuall erstellt. Danach werden FilenameCallout.jar und FilenameCallout.xml in das callouts-Verzeichnis kopiert.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CLASSPATH=:/home/oracle/Oracle/Middleware/soa12103/mft/modules/oracle.mft_12.1.3.0/core-12.1.1.0.jar

Initializing WebLogic Scripting Tool (WLST) ...

Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands

wls:/offline> connect("weblogic","welcome1","t3://localhost:7003")
Connecting to t3://localhost:7003 with userid weblogic ...
Successfully connected to managed Server "mft_server1" that belongs to domain "soa_domain".

Warning: An insecure protocol was used to connect to the 
server. To ensure on-the-wire security, the SSL port or 
Admin port should be used instead.

wls:/soa_domain/serverConfig> crtCalls("/home/oracle/Oracle/Middleware/soa12103/user_projects/domains/soa_domain/mft/callouts/FilenameCallout.xml")
Callout Filename conversion created.

wls:/soa_domain/serverConfig> listCallouts() 
Callouts
-----------
[Name:Filename conversion, Library:FilenameCallout.jar, Impl Class:com.oracle.callout.sample.FilenameCallout, Description:Filename conversion, Group:Source-pre,Target-pre,Target-post]
wls:/soa_domain/serverConfig> 

Um MFT mit seinem neuen Callout bekannt zu machen, wird das WLST benötigt. Damit es die spezifischen Kommandos von MFT kennt, wird es gestartet über das wlst.sh aus dem MFT-Verzeichnis unter $MW_HOME/mft/common/bin. Dass man das richtige Skript benutzt hat, erkennt man dann wie oben in der ersten Zeile am CLASSPATH Ausdruck.
Als erstes ist es mit dem WLST notwendig, sich auf den betreffenden Server zu verbinden. Dann wird über crtCalls(...) mit einem Parameter, der auf die XML-Datei zeigt, das Callout registriert. Via listCallouts() kann man sich alle registrierten Callouts anzeigen lassen, deleteCallout(...) entfernt es wieder.


Jetzt werden wieder zwei Verzeichnisse für Quelle und Ziel benötigt. Das können z.B. die Verzeichnisse aus dem ersten Teil sein, oder man legt einfach zwei neue an.


In der MFT-Console werden die beiden Verzeichnisse, analog zu Teil 1, wieder als Source und Target bekannt gemacht. Dann wird ein Transfer mit diesen beiden Verzeichnissen erstellt.


Nach Klick auf <add pre-processing actions> kann im Dialog jetzt auch 'Filename conversion' ausgewählt und mit Add to List hinzugefügt werden.


Das Ergebnis sollte dann wie oben abgebildet aussehen. Speichern mit Save, danach abschließen mit Deploy.


Nach kurzer Zeit sollte der erfolgreich verlaufene Transfer im Dashboard angezeigt werden.


Auch im Dateisystem sollte die übertragene Datei mit dem geänderten Dateinamen jetzt auftauchen. Damit ist das Handson-Tutorial zu Custom Callouts in Java abgeschlossen.

Teil 4: Integration mit der SOA Suite

[Teil 1] [Teil 2] [Teil 3] [Teil 4]

Freitag, 30. Januar 2015

Oracle Managed Files handson Tutorial - Teil 2: ftp-Transfer

[Teil 1] [Teil 2] [Teil 3] [Teil 4

Nachdem im ersten Teil nur Dateien transferiert wurden, die im direkten Zugriff liegen, werden in diesem Teil Dateien per ftp übertragen. Da MFT eine Anwendung auf einem Weblogic-Server ist und dessen Berechtigungskonzept nutzt, müssen die Berechtigungen zunächst in der Weblogic-Console (http://HOSTNAME:PORT/console, z.B. http://localhost:7001/console) vergeben werden.


In der Weblogic Console geht es los bei Security Realms, dann rechts auf myrealm klicken.


Dort geht es weiter unter ‚Users and Groups', dann ‚New' klicken um einen neuen Benutzer anzulegen.


Name und Password vergeben, beenden mit ‚OK'


Der Benutzer ist jetzt zwar im Weblogic bekannt, hat aber noch keine Rechte im MFT. Hierzu geht es  weiter in der MFT-Console. Unter Administration links im Baum unter Embedded Servers den Eintrag User Access auswählen.
Dann den User suchen, dazu im Suchfeld die ersten drei Zeichen ‚ftp' tippen und den vollständigen Namen aus der Auswahlbox übernehmen. Mit dem Rechtspfeil daneben wird der User übernommen.
Für den standardmässig vorhandenen Folder /ftptransfer dann die beiden Haken bei Write und bei List setzen und mit Save beenden.


Den ftp-Port kann man sich auch unter Embedded Servers unter Ports anzeigen lassen.


Mit dieser Information lässt sich jetzt ein erster Verbindungstest zum internen ftp-Server durchführen. Hierfür kann jeder ftp-Client genutzt werden, z.B. via Shell: ftp localhost 7021. Aus Bequemlichkeit sollte der ftp-Client dort gestartet werden, wo eine gezippte Testdatei (z.B. das hjkl.zip aus Teil 1) liegt.
Die ftp-Session kann offen bleiben, wir brauchen sie gleich noch.


Damit die Dateien vom internen ftp-Server weitergeleitet werden, wird eine weitere Quelle benötigt. Diese wird genau wie im ersten Teil angelegt unter Design, Sources. Dieses Mal wird der Typ FTP Embedded ausgewählt und der Pfad via Browse ausgewählt. Das Verzeichnis ist schon vorhanden, da MFT für jeden ftp-User gleich ein Verzeichnis anlegt.


Passend zu der Quelle wird auch ein neuer Transport angelegt.


Als Source wird die neue ftp-source eingetragen, die Ziele sind wieder die selben wie im ersten Teil. Das only-txt Target bekommt  noch ein Decompress als post-processing Action.
Und wichtig: Beenden wieder mit Save und Deploy.


Um den ftp-Transfer zu testen, kann die vorher geöffnete ftp-Session genutzt werden. Die Kommandos hierfür sind bin (Binary, für zip) und put hjkl.zip, zur Überrprüfung gefolgt von ls. Die Datei sollte dann angezeigt werden.


Wie auch im vorigen Beispiel sollten die beiden gelieferten Dateien im Monitoring Dashboard unten rechts nach kurzer Zeit auftauchen.


Das Ergebnis läßt sich auch auf Dateiebene überprüfen. Wenn die Dateien entsprechend angekommen ist, ist dieser Tutorial-Teil zum integrierten ftp-Server abgeschlossen.

--> Oracle Managed File Transfer (MFT) handson - Teil 3: Custom Callouts in Java

[Teil 1] [Teil 2] [Teil 3] [Teil 4