Das dreckige Dutzend – 
ADF Migration nach 12c in der IKB 
Torsten Kleiber, DOAG, 19.11.2014
IKB – Bank des Mittelstands 
IKB im Überblick 
Leistungsspektrum 
Regionale Präsenz 
1) Zzgl. 18.000 Kunden im Leasing-Geschäft 
2) Die per 30. Juni 2014 ausgewiesenen Kennziffern stehen unter dem Vorbehalt der Anerkennung der Zwischengewinne im 1. Quartal 2014/15 durch die Bankenaufsicht 
2 
 Seit 90 Jahren Finanzierungspartner des 
Mittelstands 
 2.500 Kunden in Deutschland und Europa1) 
 Aktionäre: Lone Star 91,5 %, 
Streubesitz 8,5 % 
 ca. 1.500 Mitarbeiter 
 Bilanzsumme: 24,6 Mrd. €2) 
 Common Equity Tier 1 ratio: 10,86 %2) (Basel 3) 
Mailand 
London 
Paris 
Madrid 
München 
Stuttgart 
Frankfurt 
Düsseldorf (HQ) 
Berlin 
Hamburg 
Fördermittel 
Konsortial-finanzierung 
Leasing 
Equity 
Capital Markets 
Advisory 
M&A 
Corporate Finance 
Risikomanagement 
Debt Advisory 
Derivate 
Sales & Trading 
Kredit 
Bilaterale 
Finanzierung 
Capital Markets 
Debt 
Capital Markets
Über mich 
Torsten Kleiber 
Software Architekt, Entwickler 
Kreditplattform 
15 Jahre IKB, 18 Jahre Oracle Erfahrung 
von 
Designer / Forms / Reports 
PL/SQL 
zu 
Architektur 
Fusion Middleware 
SOA Mediator 
ADF 
Development Tools 
Development Lifecycle 
Release Management 
3
Agenda 
4 
Ausgangs-lage 
Ziele 
Server 
Entwickler- 
Software 
Migration 
Release 
Bugs 
Betrieb 
??? 
Fazit 
Ausblick 
Q&A
Ausgangslage 
Start ADF vor 3 Jahren mit Lernprojekt 
bis kurz vor Release kein Deployment Server vorhanden 
Zeit, Ressourcen knapp 
SOA Suite 11.1.1.5 für Oracle Mediator vorhanden 
 Deployment ADF auf SOA Suite 
 JDeveloper / ADF 11.1.1.5 
seitdem weitere Anwendungen 
Diverse Bugs gefunden und umgangen 
Support abgelaufen 
5
Ziele 
Ablösung Eigenentwicklung für das Kreditgeschäft 
- > 500 Forms, > 60 Menüs, > 40 Bibliotheken, > 350 Reports 
- 50% in englisch 
- Integration der vorhandenen ADF Anwendungen 
Trennung LifeCycle ADF von SOA Suite 
- Komplexität 
- Patching 
- Ressourcen 
zertifizierte Version (prüfungsrelevant) 
Infrastructure as Code 
Bugbehebung 
Neue Funktionalitäten 
6
Server – Ausgangslage und Lösung 
Ausgangslage: 
- LifeCycle-Tausch Hardware absehbar 
- Hardwareanforderungen 12c nicht absehbar 
- Zusätzliche Hardware vor LifeCycle-Tausch  zusätzliche Kosten 
- Installation bisher 
- manuell und aufwändig 
- Dokumentation nur für Erstinstallation vorhanden 
Lösung: Automatisierung 
- schneller Hardwaretausch 
- reproduzierbare Konfiguration 
- Start auf bestehender Hardware 
7
Server – Proof of Concept 
 „Infrastructure as Code“? 
Womit? 
kostenlose Tools? 
Subjektive Erstauswahl: Puppet 
Proof of Concept Puppet 
- mangelnde Unterstützung für SUSE Linux Enterprise Server 
- veraltete Version 
- Forge-Module laufen auf SLES oft nicht 
- Sicherheit IKB Netzwerk 
- Keine Internetverbindung auf Server 
- Zertifikatsprüfung scheitert 
 Proof of Concept abgebrochen 
8
Server – Konfiguration / Binaries 
Installation und Konfiguration per ANT 
Konfigurationsdatei pro Umgebung 
9 
<?xml version="1.0" encoding="UTF8" ?> 
<project name="properties.conf.Entwicklung"> 
<property name="version.string" value="12.1.3.0.0"/> 
<property name="dba.user" value="sys"/> 
<property name="host.name" value="weblogic.ikb.de"/> 
<property name="host.user" value="osweblogic"/> 
<property name="host.install.dir" value="/install"/> 
<property name="host.admin.dir" value="/admin"/> 
<property name="wl.user" value="weblogic"/> 
<property name="rcu.host" value="rcu.ikb.de"/> 
<property name="rcu.port" value="1521"/> 
<property name="rcu.service" value=rcu"/> 
Bereitstellung der Software Binaries 
<target name="provide.binaries"> 
<scp password="${host.password}" todir="${host.user}@${host.name}:${host.install.dir}"> 
<fileset refid="install.fileset"/> 
</scp> 
</target>
Server – Skript-Parametrisierung 
Parametrisierte Skripte 
10 
Ersetzung der Parameter in den Skripten 
#!/bin/bash 
. HOST_ADMIN_DIR/ADF_VERSIONDIR_ENVIRONMENT.env 
pushd /install 
mkdir -p $ORACLE_HOME 
pushd $ORACLE_BASE 
tar zxvf /install/jdk-7u51-linux-x64.tar.gz 
popd 
java -jar fmw_VERSIONSTRING_wls.jar -silent -responseFile /install/fmw_VERSIONSTRING_wls.rsp 
java -jar fmw_VERSIONSTRING_infrastructure.jar -silent –responseFile 
/install/fmw_VERSIONSTRING_infrastructure.rsp 
... 
<target name="replaces.install"> 
<move todir="target/install" includeemptydirs="false" description="Datei umbenennen"> 
<fileset dir="target/install"/> 
<mapper type="regexp" from="^(.*)(VERSIONSTRING)(.*)" to="1${version.string}3"/> 
</move> 
<replaceregexp match="(VERSIONSTRING)" replace="${version.string}" flags="g" byline="true" 
description="Parameter ersetzen"> 
<fileset dir="target/install"/> 
</replaceregexp> 
... 
</target>
Server – Skript-Ausführung 
Bereitstellung und Ausführung 
11 
<target name="install" depends="clean,provide.admin,provide.install"> 
<sql classpath="${sql.classpath}" driver="oracle.jdbc.OracleDriver" url="${rcu.jdbc.url} 
userid="${dba.user}" password="${dba.password}" description="RCU Tablespaces anlegen" 
src="target/install/rcu_tablespaces.sql"/> 
<sshexec trust="true" host="${host.name}" username="${host.user}" 
password="${host.password}" description="Installation ausführen" 
command="${host.install.dir}/install.sh"/> 
</target> 
WLST-Skripte initialisieren Zustand vor Konfiguration 
startEdit() 
try: 
cmo.destroyJDBCSystemResource(getMBean('/JDBCSystemResources/' + dsNameAdf)) 
except WLSTException: 
print dsNameAdf + " does not exist!" 
activate() 
startEdit() 
cmo.createJDBCSystemResource(dsNameAdf) 
…
Server - Ergebnis 
12 
Ausgewählte gelöste Probleme 
- RCU Tablespace-Ablage  Tablespaces vor RCU anlegen 
-RCU Passworte  Eingabeumleitung aus Datei 
rcu silent -f < /install/pw.txt 
- Laufzeitprobleme wg. Zufallszahlen  rng-tools installieren und konfigurieren 
Ergebnis 
- Server-Installation und -Konfiguration (WebLogic mit ADF) in unter 30 Minuten 
- Server-Installation JDeveloper ebenfalls automatisiert
Entwicklersoftware - Ausgangslage 
ADF PM empfiehlt Standardisierung des Entwickler PC 
- JDeveloper Version 
- Patches 
- Anzahl und Version der Extensions 
Installation von Software durch den Anwender bei IKB nicht erlaubt 
Paketierung für Silent Installation 
13
Entwicklersoftware – JDeveloper Silent Installation 
Via Oracle Universal Installer 
Installer herunterladen 
Response File erzeugen 
- Manuelle Installation starten 
- Im „Installation Summary“ Bildschirm 
„Save Response File“ auswählen 
- Installation abbrechen 
Silent Installation 
14 
[ENGINE] 
Response File Version=1.0.0.0.0 
[GENERIC] 
INSTALL_TYPE=Typical 
ORACLE_HOME=C:OracleJDev121300 
jdev_suite_121300_win64.exe -silent -waitforcompletion 
-responseFile [Pfad]response.rsp 
response.rsp 
install.cmd
Entwicklersoftware - JDeveloper Silent Patching 
Via OPatch 
OPatch in JDeveloper Installation enthalten 
Patch herunterladen und entpacken 
Silent Patching 
15 
set oracle_home=C:OracleJDev121300 
pushd [path][patch nummer] 
%oracle_home%OPatchopatch apply silent 
popd 
patch.cmd
Entwicklersoftware - JDeveloper Silent Installation Extensions 
Via ojwebupdate 
 nicht dokumentiert: „ojwebupdate /?“ 
Download Extensions 
- Check for Updates in manueller Installation 
- URL‘s aus [JDEV_USER_DIR ]systemXXXo.ideupdatecenters.xml öffen 
- Passende Version herunterladen (Abhängigkeiten prüfen!) 
abhängige Extensions in richtiger Reihenfolge installieren 
Bei Nicht-Admin-Kennungen letzte Extension 2x als Admin installieren (= Restart) 
16 
set oracle_home=C:OracleJDev121300 
%oracle_home%jdeveloperjdevbinojwebupdate – 
zips=[Path]junit.zip 
%oracle_home%jdeveloperjdevbinojwebupdate – 
zips=[Path]junit-j2ee.zip 
extensions.cmd
Entwicklersoftware - JDeveloper Konfiguration 
Anpassung Installation 
- ide.conf (z.B. Memoryoptionen: -Xms, -Xmx) 
- jdev.conf (z.B. HeapMonitor : -DMainWindow.MemoryMonitorOn=true) 
Konfiguration Benutzereinstellungen 
- silent Konfiguration nicht vorgesehen 
- Einstellungs-Verzeichnis wird bei erstem Start erzeugt 
- Ort übersteuerbar per Umgebungsvariable JDEV_USER_DIR 
- Proof of Concept: Extension für Einstellungen der IKB 
- Auf viele Dateien verteilt 
- Erzeugung teilweise erst beim Setzen (z.B. Namenskonventionen ADF BC) 
-  Einstellung der Entwicklung 
-  manuelle Konfiguration nach erstem Start lt. Wiki 
- Konfiguration des WebLogic-Server über WLST-Skript 
- Alternative?: selbes Verzeichnis über JDEV_USER_DIR 
17
Entwicklersoftware – weitere Software 
Tortoise SVN 1.7 Client 
- JDeveloper SVN Plugin teilweise mangelhaft 
- Version X.X muss zur JDeveloper SVN Version passen 
- Upgrade SVN Repository erst, wenn alle Applikationen migriert sind! 
18
Migration - Migrationspfad 
Ermittlung Migrationspfad 
- 12.1.2/12.1.3 
19 
- nur von 11.1.1.7 supported 
- 11.1.1.7: 
von 11.1.1.5 supported 
 Migrationspfad: 11.1.1.5  11.1.1.7  12.1.2/12.1.3
Migration – Prinzipieller Ablauf 
Migration nach 11.1.1.7 
- Manuelles Öffnen aller Anwendungen 
- Bestätigung aller Migrationsassistant-Abfragen 
- Anpassungen 
- Test der Anwendung 
Migration nach 12.1.2/12.1.3 
- Manuelles Öffnen aller Anwendungen 
- Bestätigung aller Migrationsassistant-Abfragen 
- Anpassungen 
- Test der Anwendung 
20 
for /r [path] %%i in (*.jws) do ( 
[Oracle Home]jdeveloperjdevbinojmigrate %%i 
) 
ojmigrate: nicht dokumentiert: „ojmigrate /?“
Migration – Anwendung „Marktdaten“ 
- Kleine Anwendung für kleinen Nutzerkreis 
- DVT-Komponenten führten wg. Bug zum Serverabsturz unter 11.1.1.5/7 
- Hoher Einsatzdruck aufgrund Prüfungsfeststellung 
- März 2014 auf 12.1.2 
- seitdem produktiv 
- August 2014 auf 12.1.3 
21
Migration – Migration andere Anwendungen 
 Iterative Test-Migrationen seit November 2013 
Ablauf pro JDeveloper-Version erweitert um 
- Anpassungen Variablen für ANT Build 
- Anpassung Classpath für ANT Build über JDevLibsForAnt 
- Umstellung Build auf ojserver 
- Bei 12c „TODO 12c“ Kommentare abarbeiten 
- Build 
- automatischer Test mit Set von Unit- und GUI-Tests 
- Backport Änderungen nach 11g Trunk direkt oder als „TODO 12c“ Kommentar 
- Commit Zwischenstand 
JDeveloper IDE 12.1.2 sehr stark fehlerbehaftet 
12.1.3 im Juli 2014 erschienen 
Kleine Anpassungen der Installationsskripte für Server und Entwicklungssoftware 
Migrationsbeginn September 2014 
Intensiver manueller Test 
22
Release 
Release am 12.09.2014 
Umstellung von Deployment / Überwachung / Administration auf neue Server 
Merge Migrations-Branch in den Trunk 
Deployment aller Anwendungen 
manuelle Migration des MDS Repositories über den Enterprise Manager 
Umstellung aller Zugriffe/Links 
- Neue logische Aliase im DNS verweisen auf 
- Reale Links der Anwendung per F5 Load Balancer Forwarding 
Stoppen der Anwendungen auf den 11.1.1.5/12.1.2 Servern 
Umstellung Jobs für Continous Integration 
 Verteilung TortoiseSVN 1.7 auf Entwickler PC‘s 
23
Auswahl an Bug‘s / Notes / SR‘s 12.1.3 
- 18489410: svn: “Switch working copy” Befehl wie in TortoiseSVN 
- 18163751: svn: Zugriff per HTTP Proxy mit Authorization 
- JSP Precompile funktioniert nicht für jspx/jsff in ADF Libraries 
- 19525523: JSP Precompile funktioniert nicht im IntegratedWebLogicServer 
- 18704469: Task Tags werden in XML- or Text-Dateien nicht mehr markiert 
- 19434883: Reihenfolge von Code Editor Save Actions wird nicht gespeichert 
- 19347286: Order by kann in Expert Mode VO’s nicht geändert werden 
- 19353293: Code Insight : Statt Return Type wird Methoden-Signatur angezeigt 
- 776277.1: DVT: X11-Server oder JVM-Parameter für java.awt.* wird benötigt 
- 19823554: Custom Filter funktionieren nicht, wenn Suchergebnis > Fetch Size 
- 19529827: IE 8/9: Fokusverlust bei 2. Klick in selbe Tabellenspalte 
- 19724439: Search-LOV mit großen Feldern wird nicht dynamisch vergrößert 
- 19771991: Filter auf Date/ArrayList Spalten - ClassCastException 
- 19855915: Filter auf Number Spalten - Fehler bei Eingabe Nachkommastellen 
- NotConnectedEcxeptions in (nested?) AM’s in (isolated?) TF’s 
Bitte SR öffnen und eskalieren! Oder haben Sie Lösungen für diese Probleme? 
24 
Workaround Patch wird nicht gefixt
Betrieb – Fire Fighting 
25
??? - Das dreckige Dutzend? 
Bugs vor Einsatz als vertretbar eingestuft 
kein Last-Test wg. fehlender Infrastruktur 
 NotConnectedException’s führen zu 
Destabilisierung unter Produktionslast 
nach einer Woche Betrieb Fallback 
durchgeführt für diese Anwendung 
Vorläufig Weiterentwicklung unter 11.1.1.5 
Anwendung nicht verworfen, Backport der 
Änderungen wo möglich 
26
Ausblick 
Weitere Analyse der zurückgerollten 12c-Anwendung 
- WebLogic Logs 
- Lasttests 
- Debugging 
Entscheidung über neue Migration abhängig von 
- Ergebnissen der Analyse 
- Rollout Internet Explorer 11 (supportet erst ab 11.1.1.6 / 11.1.2.3 / 12.1.2) 
27
Fazit 
 Projektziel wurde nicht erreicht 
 Scheitern hatte negative Außenwirkung 
Scheitern als Chance für Erweiterung 
Entwicklungsprozess 
- Mehr automatisierte Tests 
- Last-Test 
- Fehler-Monitoring 
- … 
Ist ADF 12.1.3 wirklich produktionsreif? 
28
Fragen & Antworten 
29

Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.

  • 1.
    Das dreckige Dutzend– ADF Migration nach 12c in der IKB Torsten Kleiber, DOAG, 19.11.2014
  • 2.
    IKB – Bankdes Mittelstands IKB im Überblick Leistungsspektrum Regionale Präsenz 1) Zzgl. 18.000 Kunden im Leasing-Geschäft 2) Die per 30. Juni 2014 ausgewiesenen Kennziffern stehen unter dem Vorbehalt der Anerkennung der Zwischengewinne im 1. Quartal 2014/15 durch die Bankenaufsicht 2  Seit 90 Jahren Finanzierungspartner des Mittelstands  2.500 Kunden in Deutschland und Europa1)  Aktionäre: Lone Star 91,5 %, Streubesitz 8,5 %  ca. 1.500 Mitarbeiter  Bilanzsumme: 24,6 Mrd. €2)  Common Equity Tier 1 ratio: 10,86 %2) (Basel 3) Mailand London Paris Madrid München Stuttgart Frankfurt Düsseldorf (HQ) Berlin Hamburg Fördermittel Konsortial-finanzierung Leasing Equity Capital Markets Advisory M&A Corporate Finance Risikomanagement Debt Advisory Derivate Sales & Trading Kredit Bilaterale Finanzierung Capital Markets Debt Capital Markets
  • 3.
    Über mich TorstenKleiber Software Architekt, Entwickler Kreditplattform 15 Jahre IKB, 18 Jahre Oracle Erfahrung von Designer / Forms / Reports PL/SQL zu Architektur Fusion Middleware SOA Mediator ADF Development Tools Development Lifecycle Release Management 3
  • 4.
    Agenda 4 Ausgangs-lage Ziele Server Entwickler- Software Migration Release Bugs Betrieb ??? Fazit Ausblick Q&A
  • 5.
    Ausgangslage Start ADFvor 3 Jahren mit Lernprojekt bis kurz vor Release kein Deployment Server vorhanden Zeit, Ressourcen knapp SOA Suite 11.1.1.5 für Oracle Mediator vorhanden  Deployment ADF auf SOA Suite  JDeveloper / ADF 11.1.1.5 seitdem weitere Anwendungen Diverse Bugs gefunden und umgangen Support abgelaufen 5
  • 6.
    Ziele Ablösung Eigenentwicklungfür das Kreditgeschäft - > 500 Forms, > 60 Menüs, > 40 Bibliotheken, > 350 Reports - 50% in englisch - Integration der vorhandenen ADF Anwendungen Trennung LifeCycle ADF von SOA Suite - Komplexität - Patching - Ressourcen zertifizierte Version (prüfungsrelevant) Infrastructure as Code Bugbehebung Neue Funktionalitäten 6
  • 7.
    Server – Ausgangslageund Lösung Ausgangslage: - LifeCycle-Tausch Hardware absehbar - Hardwareanforderungen 12c nicht absehbar - Zusätzliche Hardware vor LifeCycle-Tausch  zusätzliche Kosten - Installation bisher - manuell und aufwändig - Dokumentation nur für Erstinstallation vorhanden Lösung: Automatisierung - schneller Hardwaretausch - reproduzierbare Konfiguration - Start auf bestehender Hardware 7
  • 8.
    Server – Proofof Concept  „Infrastructure as Code“? Womit? kostenlose Tools? Subjektive Erstauswahl: Puppet Proof of Concept Puppet - mangelnde Unterstützung für SUSE Linux Enterprise Server - veraltete Version - Forge-Module laufen auf SLES oft nicht - Sicherheit IKB Netzwerk - Keine Internetverbindung auf Server - Zertifikatsprüfung scheitert  Proof of Concept abgebrochen 8
  • 9.
    Server – Konfiguration/ Binaries Installation und Konfiguration per ANT Konfigurationsdatei pro Umgebung 9 <?xml version="1.0" encoding="UTF8" ?> <project name="properties.conf.Entwicklung"> <property name="version.string" value="12.1.3.0.0"/> <property name="dba.user" value="sys"/> <property name="host.name" value="weblogic.ikb.de"/> <property name="host.user" value="osweblogic"/> <property name="host.install.dir" value="/install"/> <property name="host.admin.dir" value="/admin"/> <property name="wl.user" value="weblogic"/> <property name="rcu.host" value="rcu.ikb.de"/> <property name="rcu.port" value="1521"/> <property name="rcu.service" value=rcu"/> Bereitstellung der Software Binaries <target name="provide.binaries"> <scp password="${host.password}" todir="${host.user}@${host.name}:${host.install.dir}"> <fileset refid="install.fileset"/> </scp> </target>
  • 10.
    Server – Skript-Parametrisierung Parametrisierte Skripte 10 Ersetzung der Parameter in den Skripten #!/bin/bash . HOST_ADMIN_DIR/ADF_VERSIONDIR_ENVIRONMENT.env pushd /install mkdir -p $ORACLE_HOME pushd $ORACLE_BASE tar zxvf /install/jdk-7u51-linux-x64.tar.gz popd java -jar fmw_VERSIONSTRING_wls.jar -silent -responseFile /install/fmw_VERSIONSTRING_wls.rsp java -jar fmw_VERSIONSTRING_infrastructure.jar -silent –responseFile /install/fmw_VERSIONSTRING_infrastructure.rsp ... <target name="replaces.install"> <move todir="target/install" includeemptydirs="false" description="Datei umbenennen"> <fileset dir="target/install"/> <mapper type="regexp" from="^(.*)(VERSIONSTRING)(.*)" to="1${version.string}3"/> </move> <replaceregexp match="(VERSIONSTRING)" replace="${version.string}" flags="g" byline="true" description="Parameter ersetzen"> <fileset dir="target/install"/> </replaceregexp> ... </target>
  • 11.
    Server – Skript-Ausführung Bereitstellung und Ausführung 11 <target name="install" depends="clean,provide.admin,provide.install"> <sql classpath="${sql.classpath}" driver="oracle.jdbc.OracleDriver" url="${rcu.jdbc.url} userid="${dba.user}" password="${dba.password}" description="RCU Tablespaces anlegen" src="target/install/rcu_tablespaces.sql"/> <sshexec trust="true" host="${host.name}" username="${host.user}" password="${host.password}" description="Installation ausführen" command="${host.install.dir}/install.sh"/> </target> WLST-Skripte initialisieren Zustand vor Konfiguration startEdit() try: cmo.destroyJDBCSystemResource(getMBean('/JDBCSystemResources/' + dsNameAdf)) except WLSTException: print dsNameAdf + " does not exist!" activate() startEdit() cmo.createJDBCSystemResource(dsNameAdf) …
  • 12.
    Server - Ergebnis 12 Ausgewählte gelöste Probleme - RCU Tablespace-Ablage  Tablespaces vor RCU anlegen -RCU Passworte  Eingabeumleitung aus Datei rcu silent -f < /install/pw.txt - Laufzeitprobleme wg. Zufallszahlen  rng-tools installieren und konfigurieren Ergebnis - Server-Installation und -Konfiguration (WebLogic mit ADF) in unter 30 Minuten - Server-Installation JDeveloper ebenfalls automatisiert
  • 13.
    Entwicklersoftware - Ausgangslage ADF PM empfiehlt Standardisierung des Entwickler PC - JDeveloper Version - Patches - Anzahl und Version der Extensions Installation von Software durch den Anwender bei IKB nicht erlaubt Paketierung für Silent Installation 13
  • 14.
    Entwicklersoftware – JDeveloperSilent Installation Via Oracle Universal Installer Installer herunterladen Response File erzeugen - Manuelle Installation starten - Im „Installation Summary“ Bildschirm „Save Response File“ auswählen - Installation abbrechen Silent Installation 14 [ENGINE] Response File Version=1.0.0.0.0 [GENERIC] INSTALL_TYPE=Typical ORACLE_HOME=C:OracleJDev121300 jdev_suite_121300_win64.exe -silent -waitforcompletion -responseFile [Pfad]response.rsp response.rsp install.cmd
  • 15.
    Entwicklersoftware - JDeveloperSilent Patching Via OPatch OPatch in JDeveloper Installation enthalten Patch herunterladen und entpacken Silent Patching 15 set oracle_home=C:OracleJDev121300 pushd [path][patch nummer] %oracle_home%OPatchopatch apply silent popd patch.cmd
  • 16.
    Entwicklersoftware - JDeveloperSilent Installation Extensions Via ojwebupdate  nicht dokumentiert: „ojwebupdate /?“ Download Extensions - Check for Updates in manueller Installation - URL‘s aus [JDEV_USER_DIR ]systemXXXo.ideupdatecenters.xml öffen - Passende Version herunterladen (Abhängigkeiten prüfen!) abhängige Extensions in richtiger Reihenfolge installieren Bei Nicht-Admin-Kennungen letzte Extension 2x als Admin installieren (= Restart) 16 set oracle_home=C:OracleJDev121300 %oracle_home%jdeveloperjdevbinojwebupdate – zips=[Path]junit.zip %oracle_home%jdeveloperjdevbinojwebupdate – zips=[Path]junit-j2ee.zip extensions.cmd
  • 17.
    Entwicklersoftware - JDeveloperKonfiguration Anpassung Installation - ide.conf (z.B. Memoryoptionen: -Xms, -Xmx) - jdev.conf (z.B. HeapMonitor : -DMainWindow.MemoryMonitorOn=true) Konfiguration Benutzereinstellungen - silent Konfiguration nicht vorgesehen - Einstellungs-Verzeichnis wird bei erstem Start erzeugt - Ort übersteuerbar per Umgebungsvariable JDEV_USER_DIR - Proof of Concept: Extension für Einstellungen der IKB - Auf viele Dateien verteilt - Erzeugung teilweise erst beim Setzen (z.B. Namenskonventionen ADF BC) -  Einstellung der Entwicklung -  manuelle Konfiguration nach erstem Start lt. Wiki - Konfiguration des WebLogic-Server über WLST-Skript - Alternative?: selbes Verzeichnis über JDEV_USER_DIR 17
  • 18.
    Entwicklersoftware – weitereSoftware Tortoise SVN 1.7 Client - JDeveloper SVN Plugin teilweise mangelhaft - Version X.X muss zur JDeveloper SVN Version passen - Upgrade SVN Repository erst, wenn alle Applikationen migriert sind! 18
  • 19.
    Migration - Migrationspfad Ermittlung Migrationspfad - 12.1.2/12.1.3 19 - nur von 11.1.1.7 supported - 11.1.1.7: von 11.1.1.5 supported  Migrationspfad: 11.1.1.5  11.1.1.7  12.1.2/12.1.3
  • 20.
    Migration – PrinzipiellerAblauf Migration nach 11.1.1.7 - Manuelles Öffnen aller Anwendungen - Bestätigung aller Migrationsassistant-Abfragen - Anpassungen - Test der Anwendung Migration nach 12.1.2/12.1.3 - Manuelles Öffnen aller Anwendungen - Bestätigung aller Migrationsassistant-Abfragen - Anpassungen - Test der Anwendung 20 for /r [path] %%i in (*.jws) do ( [Oracle Home]jdeveloperjdevbinojmigrate %%i ) ojmigrate: nicht dokumentiert: „ojmigrate /?“
  • 21.
    Migration – Anwendung„Marktdaten“ - Kleine Anwendung für kleinen Nutzerkreis - DVT-Komponenten führten wg. Bug zum Serverabsturz unter 11.1.1.5/7 - Hoher Einsatzdruck aufgrund Prüfungsfeststellung - März 2014 auf 12.1.2 - seitdem produktiv - August 2014 auf 12.1.3 21
  • 22.
    Migration – Migrationandere Anwendungen  Iterative Test-Migrationen seit November 2013 Ablauf pro JDeveloper-Version erweitert um - Anpassungen Variablen für ANT Build - Anpassung Classpath für ANT Build über JDevLibsForAnt - Umstellung Build auf ojserver - Bei 12c „TODO 12c“ Kommentare abarbeiten - Build - automatischer Test mit Set von Unit- und GUI-Tests - Backport Änderungen nach 11g Trunk direkt oder als „TODO 12c“ Kommentar - Commit Zwischenstand JDeveloper IDE 12.1.2 sehr stark fehlerbehaftet 12.1.3 im Juli 2014 erschienen Kleine Anpassungen der Installationsskripte für Server und Entwicklungssoftware Migrationsbeginn September 2014 Intensiver manueller Test 22
  • 23.
    Release Release am12.09.2014 Umstellung von Deployment / Überwachung / Administration auf neue Server Merge Migrations-Branch in den Trunk Deployment aller Anwendungen manuelle Migration des MDS Repositories über den Enterprise Manager Umstellung aller Zugriffe/Links - Neue logische Aliase im DNS verweisen auf - Reale Links der Anwendung per F5 Load Balancer Forwarding Stoppen der Anwendungen auf den 11.1.1.5/12.1.2 Servern Umstellung Jobs für Continous Integration  Verteilung TortoiseSVN 1.7 auf Entwickler PC‘s 23
  • 24.
    Auswahl an Bug‘s/ Notes / SR‘s 12.1.3 - 18489410: svn: “Switch working copy” Befehl wie in TortoiseSVN - 18163751: svn: Zugriff per HTTP Proxy mit Authorization - JSP Precompile funktioniert nicht für jspx/jsff in ADF Libraries - 19525523: JSP Precompile funktioniert nicht im IntegratedWebLogicServer - 18704469: Task Tags werden in XML- or Text-Dateien nicht mehr markiert - 19434883: Reihenfolge von Code Editor Save Actions wird nicht gespeichert - 19347286: Order by kann in Expert Mode VO’s nicht geändert werden - 19353293: Code Insight : Statt Return Type wird Methoden-Signatur angezeigt - 776277.1: DVT: X11-Server oder JVM-Parameter für java.awt.* wird benötigt - 19823554: Custom Filter funktionieren nicht, wenn Suchergebnis > Fetch Size - 19529827: IE 8/9: Fokusverlust bei 2. Klick in selbe Tabellenspalte - 19724439: Search-LOV mit großen Feldern wird nicht dynamisch vergrößert - 19771991: Filter auf Date/ArrayList Spalten - ClassCastException - 19855915: Filter auf Number Spalten - Fehler bei Eingabe Nachkommastellen - NotConnectedEcxeptions in (nested?) AM’s in (isolated?) TF’s Bitte SR öffnen und eskalieren! Oder haben Sie Lösungen für diese Probleme? 24 Workaround Patch wird nicht gefixt
  • 25.
    Betrieb – FireFighting 25
  • 26.
    ??? - Dasdreckige Dutzend? Bugs vor Einsatz als vertretbar eingestuft kein Last-Test wg. fehlender Infrastruktur  NotConnectedException’s führen zu Destabilisierung unter Produktionslast nach einer Woche Betrieb Fallback durchgeführt für diese Anwendung Vorläufig Weiterentwicklung unter 11.1.1.5 Anwendung nicht verworfen, Backport der Änderungen wo möglich 26
  • 27.
    Ausblick Weitere Analyseder zurückgerollten 12c-Anwendung - WebLogic Logs - Lasttests - Debugging Entscheidung über neue Migration abhängig von - Ergebnissen der Analyse - Rollout Internet Explorer 11 (supportet erst ab 11.1.1.6 / 11.1.2.3 / 12.1.2) 27
  • 28.
    Fazit  Projektzielwurde nicht erreicht  Scheitern hatte negative Außenwirkung Scheitern als Chance für Erweiterung Entwicklungsprozess - Mehr automatisierte Tests - Last-Test - Fehler-Monitoring - … Ist ADF 12.1.3 wirklich produktionsreif? 28
  • 29.