Performance – JDeveloper

Werbung
Um in den Chat zu gehen, bitte mit dem Cursor gegen die obere
Ecke des Bildschirms stoßen und auf das Chatsymbol klicken.
Bitte testen Sie den Chat zu Beginn der Session.
ADF News Session
Performance von ADF Anwendungen
Webkonferenz, 16. Juli 2010
Vortrag
Thema
Martin Kunze/Robotron
– [email protected] –
Moderation Annegret Warnecke/Oracle
- [email protected] -
+++ für diese Session ist eine Aufzeichnung geplant +++
Sie werden informiert, wenn die Aufzeichnung beginnt ... bitte wählen Sie sich zusätzlich zu der
Webconferenz in die Telko ein - bitte während der WebConf voice streaming nicht nutzen
Einwahldaten für die Telefonkonferenz
069 2222 16 106 oder 0800 66 485 15
ConfCode: 208 503 9 SecurityPasscode: 112233
Sie werden für den Webcast stumm geschaltet
Inhalt
Browserperformance (Client)
Performance der Entwicklungsumgebung (JDeveloper)
Anwendungslogik: Mittelschicht vs. Datenbank
Tuning-Möglichkeiten ADF BC / ADF Faces / Taskflows
Browserperformance
Webanwendung leben von JavaScript
Unterschiedliche JavaScript Engine der Browser sind dem
Kunden oft nicht bekannt
oft bestehen Firmenrestriktionen (nur Microsoft-Browser)
Browserperformance
Google Chrome derzeit einer der schnellsten Browser
IE 7/8 weit abgeschieden (IE 9 macht vieles besser)
Firefox die „beste“ Alternative
„Browserproblematik“ frühzeitig mit dem Kunden besprechen
Performance – JDeveloper
JDeveloper… umfangreiche Entwicklungsumgebung die
unzählige Operationen (Validierungen, …) durchführt
Problem: sinkende Performance bei größeren Projekten
Lösung:
– JDeveloper-Einstellungen zur Geschwindigkeitssteigerung
– Anwendung in „Anwendungs-Module“ (Projekte) unterteilen und
Working Sets anlegen
Performance – JDeveloper
Tools -> Preferences
– Extensions: unnötige Erweiterungen
deaktivieren (ADF Swing, UML, EJB
Modeler)
– Code Editor / Display: unnötige
Optionen deaktivieren
– Filetypes -> Default Editor: JSPXSeiten in der „Source“ Ansicht
starten
Performance – JDeveloper
Anwendung in Module aufteilen / Working Sets erstellen
– Application –> Filter Application oder Trichtersymbol
Run-Konfiguration (Testen während der Entwicklung) auf den
aktuellen Working Set einstellen!
– Run -> Use Current Working Set (Java EE only)
Mittelschicht vs. Datenbank
sehr aufwändige Prozesse in PL/SQL-Prozeduren auslagern
und mittels Java (z.B. Application Module) starten
Sicherung von getätigten Investitionen in PL/SQL
Mittelschicht vs. Datenbank
Methode per Data Controls in einer JSPX-Seite oder per
oracle.binding.OperationBinding in einer Managed Bean
nutzen
Mittelschicht vs. Datenbank
Vorsicht bei Global Temporary Tables und aktivierten
Application Module Pooling
– setReleaseLevel(ApplicationModule.RELEASE_LEVEL_RESER
VED); im Konstruktor des Application Modules verwenden
– Achtung: nur in speziellen Anwendungsfällen verwenden,
umgeht Pooling-Mechanismen
Tuning – ADF Faces
Keep Things Simple:
– Template „flach“ halten (wenig Animationen, da dies die
Performance jeder Seite beeinflusst)
– Client Geometry Management (Anpassungen der Komponenten
an den Platz auf den Clientrechner [PanelSplitter,
PanelStretchLayout, …]. „Kosten“ hängen direkt von der
Komplexität der Seite ab
Tuning – ADF Faces
manuelle JavaScript
– Code in Datei (*.js) auslagern
– ADF-Tag: <af:resource type="javascript" source=" "/>.
– nur Einbinden wenn benötigt (nicht im Template hinzufügen)
Animationen (Popup, Tree, …) deaktivieren
– <animation-enabled>false</animation-enabled> (trinidad-config.xml)
visible vs. rendered
– Komponenten die keine Interaktion auf der Client-Seite durchführen
sollten nicht gerenderd werden
Partial Page Rendering (PPR)
– autoSubmit / partialSubmit / partialTriggers
– AdfFacesContext.getCurrent().addPartialTarget("component");
Tuning – ADF BC (View Object)
read-only VO
– entity-based VO erstellen und die „Updateable“ Option
deaktivieren
– VO-Instanzen können den Entity Object (EO) Cache nutzen
Bind Variablen / View Criterias nutzen
– Wiederverwendung von Statements
Tuning – ADF BC (View Object)
JDBC Fetch Size erhöhen (default 1)
– sollte der RangeSize des Iterators entsprechen
„ All at once“ für look-up-Daten (List of Values)
– alle Datensätze werden in die Mittelschicht transferiert
– sinnvoll für View Objecte in einem shared Application Module
Tuning – ADF BC (View Object)
Scrollen über große Datenmengen
– möglichst verhindern (getEstimatedRowCount())
– wenn nicht möglich „range paging“ (statt „scrollable“) verwenden
Tuning – ADF BC (Application Module)
jbo.ampool.initpoolsize erhöhen
– verkürzt die Wartezeit beim ersten
Aufruf der Anwendung
jbo.ampool.minavailablesize
– mind. 1, Neuerstellung des AM-Pools
zu verhindern
jbo.ampool.timetolive
– höhere Wert erhört die Lebensdauer
einer AM-Instanz
Tuning – Taskflows
Dynamic Regions nutzen
– siehe “ADF News Session – Taskflow Integration”
Transaction-Control der Bounded Taskflows nutzen
– Bsp: 2 Taskflows mit je 1 Root-Application-Module
• Master-Taskflow: “No Controller Transaction” Æ 2 DB-Verbindungen
• Master-Taskflow: “Always Begin New Transaction” Æ 1 DB-Verbindung
Fazit
Performancegewinne können an vielen Stellen erzielt werden
ADF bietet umfangreiche Konfigurationsmöglichkeiten um Anwendungen zu
Optimieren
Links:
Oracle Application Development Framework Performance Tuning
http://download.oracle.com/docs/cd/E15523_01/core.1111/e10108/adf.htm#CIHHGADG
Avrom's Java EE and Oracle ADF Blog - ADF BC Tuning
http://www.avromroyfaderman.com/2008/10/adf-bc-tuning-i-entity-objects/
Understanding Application Module Pooling Concepts and Configuration Parameters
http://www.oracle.com/technology/products/jdev/tips/muench/ampooling/index.html
Um in den Chat zu gehen, bitte mit dem Cursor gegen die obere
Ecke des Bildschirms stoßen und auf das Chatsymbol klicken.
ADF News Session
Performance von ADF Anwendungen
Martin Kunze/Robotron
– [email protected] –
Vielen Dank für Ihre Aufmerksamkeit!
Thema
ADF News Sessions wünschen einen
angenehmen Urlaub und verabschieden sich
in die Sommerpause
diskutieren Sie mit uns über die Inhalte dieser Session
auf
https://www.xing.com/app/forum/seoparser/adfcomm/
Herunterladen