© 2003, Rudolf Jansen Java in der Datenbank Rudolf Jansen Freiberuflicher Entwickler und Autor DOAG SIG Development, 6.3.2003.

Slides:



Advertisements
Ähnliche Präsentationen
GWT - google Web Toolkit
Advertisements

Objektrelationales Mapping mit JPA Advanced Topics Jonas Bandi Simon Martinelli.
Softwareentwicklung für Android
SQL Server 2005.NET Integration Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
MySQL.
1 Spezielle Packages des Java SDK (1.4) java.nio.
Imperative Programmierung -Entwicklungswerkzeuge
Objektorientierte Programmierung
Datenbankzugriff im WWW (Kommerzielle Systeme)
Java: Objektorientierte Programmierung
Indirekte Adressierung
Java: Grundlagen der Sprache
FH-Hof DBS II: Übersicht über die Vorlesung Richard Göbel.
Java: Grundlagen der Objektorientierung
SQL als Abfragesprache
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Publikation von XML-Daten mit XSQL Pages. © Prof. T. Kudraß, HTWK Leipzig Vorteile von XSQL Pages einfache Generierung von XML-Dokumenten auf der Basis.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
JAVA RMI.
Vortrag III Hier in der Vorlesungszeit! Anwesenheitspflicht Jede Gruppe hat 6 Minuten! Stellt eure GUI vor –was ihr besonderes gemacht habt –Spektakuläre.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
Packages Vortrag : Cornelia Hardt 23. November 1999.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
JDBC EDV JDBC.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Aufbau einer Verbindung zur Datenbank import java.net.URL; import java.sql.*; class JDBCExample.
GSI GSI Status Juni 2005 Michael Dahlinger, IT 14/6/2005.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Herzlich Willkommen zu „Einführung in die Programmierung mit Java“
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Wir bauen uns eine Webapplikation!
Java und Eclipse.
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
HORIZONT 1 XINFO ® Das IT - Informationssystem Eclipse Plugin HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Java Server Pages Sergej Keterling
Thread Synchronisation in JAVA
PL/SQL - Kurze Einführung April 2003Übung Data Warehousing: PL/SQL 2 PL/SQL.. ist eine Oracle-eigene, prozedurale Programmiersprache Sämtliche.
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
11 Verwaltung von Abhängigkeiten. Ziele Am Ende dieser Lektion verfügen Sie über die folgenden Kenntnisse: Überwachen prozeduraler Abhängigkeiten Effekte.
Datenbanken im Web 1.
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
11 Zugriffskontrolle (Access Control) Ziele Privilegien Rollen GRANT und REVOKE Befehl Privilegien Rollen GRANT und REVOKE Befehl.
Java Server Pages Technologie zur Erzeugung dynamischer Webseiten basierend auf Java-Servlets Blockseminar Wintersemester 2001/2002Jochen Pfeiffer Seite.
Trigger-abhängige Client Interaktionen (bezüglich Oracle8i)
Wieland Schwinger Softwareentwicklung 2 Assertions.
Reflection API1 Motivation Reflection API Core Reflection API: java.lang.reflect Seit JDK 1.1 integraler Bestandteil der Java- Klassenbibliothek Ermöglicht:
Releasworkshop 1.85 Installation & Administration Dipl. Phys. Ralf Wagner Siegen Dezember 2009.
Java 2 Enterprise Edition (J2EE) Sascha Baumeister Software Architect Specification Lead JSR086 IBM Deutschland Entwicklung GmbH
© 2003, Rudolf Jansen Einsatz der XML-Features der Oracle 9i DB zur Systemintegration Rudolf Jansen Freiberuflicher Entwickler und Autor
Oracle IFS Die Brücke zwischen Content Management System und einer Produktpräsentation im Internet.
© 2004 softgate, Oracle update10g Migration von Oracle 8i/9i auf 10g.
Java Programme nur ein bisschen objektorientiert.
© 2005, Rudolf Jansen JDBC Rudolf Jansen Freiberuflicher Entwickler und Autor DOAG - SIG Development.
SOFTWARE POWERS THE INTERNET SM. Oracle9i Application Server Mathias Kaldenhoff Geschäftsstelle HH Leiter Systemberatung Oracle Deutschland GmbH
Jürgen Vester Manager Sales Consulting Stuttgart Webreporting für SAP R/* mit Oracle Application Express (ehem. HTML DB)
JAVA - Einführung. © Übersicht Hintergrund und Geschichte Wie sieht ein JAVA Programm aus ? Was ist ein JAVA Programm ? Wie schreibt/übersetzt.
Thomas Tretter, 10. Februar 2004Oracle Label Security1 Oracle Label Security (fine grained access control) 10. Februar 2004.
Robotron – Titel der Präsentation Olaf Nowatzki Dresden,
Google App Engine - Technische Stärken und Schwächen
Das IT - Informationssystem
Hello World! Javakurs 2013 Arne Kappen
Create Table, Rechte und Rollen
 Präsentation transkript:

© 2003, Rudolf Jansen Java in der Datenbank Rudolf Jansen Freiberuflicher Entwickler und Autor DOAG SIG Development,

© 2003, Rudolf Jansen Agenda á Motivation á Java in der DB - Historie á loadjava-Tool á Java Stored Procedures á Resolving á Administration á Besonderheiten á Vergleich Java - PL/SQL

© 2003, Rudolf Jansen Motivation - Java-Architekturen Oracle 9i Rel.2 -Datenbank Oracle JVM JDBC-Applikation SQLJ-Applikation SQL-Net- Zugriff

© 2003, Rudolf Jansen Motivation u Normalfall: Externe Java-Anwendung - DB-Anbindung über JDBC oder SQLJ - (Netzwerk-)Zugriff auf die DB ist häufig der Engpass u Datenintensive Anwendungen: PL/SQL - „Programm läuft da, wo die Daten liegen“ - Vorteil: Keine Typumwandlung erforderlich, da SQL-Datentypen verwendet werden - Nachteil: weniger APIs für Anbindung an externe Systeme (Mail, Dateizugriffe, XML-Parsing,...) u Gesucht: Goldener Mittelweg Ô Java in der Datenbank

© 2003, Rudolf Jansen Java in der Datenbank Oracle JVM-Übersicht: erstmals in Oracle (JDK 1.1.6) JDK 1.2 ab Oracle Oracle 9i Release 2: – JDK 1.3 – kein J2EE mehr Ô J2SE in der Datenbank Ô J2EE im Application Server nach Standard-Installation verfügbar sqlplus-Startmeldung: Verbunden mit: Oracle9i Enterprise Edition Release – Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release – Production

© 2003, Rudolf Jansen loadjava -Tool Java-Source-Code (*.java) Java-Class-Dateien (*.class) JAR-Archive (*.jar) loadjava Oracle-DB Java- Compiler Java- Sourcen Java- Klassen Java- Ressourcen

© 2003, Rudolf Jansen loadjava -Tool Beispiel HelloWorld.java: public class HelloWorld { public static void main(String args[]) { System.out.println("Hello World from Main-Method"); } public static void test() { System.out.println("Hello World from Test-Method"); } } %ORACLE_HOME%\bin\loadjava -user test/test -resolve – verbose HelloWorld.java creating : source HelloWorld loading : source HelloWorld creating : HelloWorld resolving: source HelloWorld

© 2003, Rudolf Jansen Java in der Datenbank Ablage von Java-Sourcecode und Java-Klasse als Schemaobjekt im Schema des loadjava-Users select object_name, object_type, status from user_objects where object_type like '%JAVA%'; OBJECT_NAME OBJECT_TYPE STATUS HelloWorld JAVA CLASS VALID HelloWorld JAVA SOURCE VALID 2 Zeilen ausgewählt.

© 2003, Rudolf Jansen Java in der Datenbank Alternative: Direktes Anlegen in der Datenbank create or replace and compile java source named HelloWorldInTheDatabase as public class HelloWorldInTheDatabase { public static void test() { System.out.println("Hello World from the DB-Version"); } } Java wurde erstellt.

© 2003, Rudolf Jansen Java in der Datenbank Administration über Oracle Enterprise Manager

© 2003, Rudolf Jansen Java Stored Procedures Aufruf über Java Stored Procedure „PL/SQL mit Java-Aufrufen“ create or replace procedure start_helloworld as language java name 'HelloWorld.test()';. Aufruf dieser Wrapper-Funktion execute start_helloworld; Hello World from Test-Method PL/SQL-Prozedur wurde erfolgreich abgeschlossen. Voraussetzung (da sonst nur Ausgabe in das Tracefile) SQL> call dbms_java.set_output(buffersize)

© 2003, Rudolf Jansen Resolving kein Dateisystem in der Datenbank Ô kein CLASSPATH stattdessen Suche nach den Javaklassen in den folgenden Datenbankschemata ¬ Schema des aufrufenden Users ­ über PUBLIC-Synonyme u.a. im SYS-Schema (enthält die J2SE-Klassen) Reihenfolge kann über RESOLVE-Klausel beim Laden der Klasse überschrieben werden

© 2003, Rudolf Jansen Resolving Beispiel: Laden einer geänderten HelloWorld.java-Datei in das Schema SCOTT public class HelloWorld { public static void main(String args[]) { System.out.println("Hello World from Scott"); } public static void test() { System.out.println("Hello World from Scott-test"); } } %ORACLE_HOME%\bin\loadjava -user scott/tiger -resolve -verbose HelloWorld.java

© 2003, Rudolf Jansen Resolving select object_name, owner, object_type, status from all_objects where object_type = 'JAVA CLASS' and object_name = 'HelloWorld'; OBJECT_NAME OWNER OBJECT_TYPE STATUS HelloWorld SCOTT JAVA CLASS VALID HelloWorld TEST JAVA CLASS VALID 2 Zeilen ausgewählt.

© 2003, Rudolf Jansen Resolving create or replace and compile java source named HelloWorldResolver resolver ((*SCOTT) (*TEST) (*PUBLIC)) as public class HelloWorldResolver { public static void test() { HelloWorld.test(); } } alternativ auch Angabe über die -resolve-Option des loadjava-Tools

© 2003, Rudolf Jansen Resolving create or replace procedure start_helloworld_resolver as language java name 'HelloWorldResolver.test()'; Prozedur wurde angelegt. execute start_helloworld_resolver; Hello World from Scott-test PL/SQL-Prozedur wurde erfolgreich abgeschlossen.

© 2003, Rudolf Jansen Administration Init-Parameter: SHARED_POOL_SIZE - Default: 50 MB - Laden und Resolven von Java-Klassen JAVA_POOL_SIZE Default: 20 MB jeder Java-Aufruf erfolgt in eigener JVM und eigener DB-Session Java_Pool enthält von mehreren Cleints gemeinsam genutzen Code und Read-Only-Daten  Speicherbedarf pro JVM : ca. 40 KB

© 2003, Rudolf Jansen Administration Init-Parameter: JAVA_SOFT_SESSIONSPACE_LIMIT JAVA_MAX_SESSIONSPACE_LIMIT - Überwachung des Speicherbedarfs einer Java-Anwendung - ähnlich: ulimit (UNIX) - Überschreitung der JAVA_SOFT_SESSIONSPACE_LIMIT-Grenze:  Warnmeldung ins Trace-File - Überschreitung der JAVA_MAX_SESSIONSPACE_LIMIT-Grenze:  Out-Of-Memory-Fehler  „Notbremse“ gegen übermäßige Belegung des Java-Pools

© 2003, Rudolf Jansen Administration Rechtevergabe: Sicherheitskonzept der Oracle 9i JVM basiert auf dem Java 2 Security-Konzept Rechtevergabe und Verwaltung über PolicyTable insbesondere Zugriffsrechte auf Betriebssystem-Ressourcen - Dateien - Sockets -...

© 2003, Rudolf Jansen Administration desc user_java_policy KIND VARCHAR2(8) GRANTEE_NAME NOT NULL VARCHAR2(30) TYPE_SCHEMA NOT NULL VARCHAR2(30) TYPE_NAME VARCHAR2(4000) NAME VARCHAR2(4000) ACTION VARCHAR2(4000) ENABLED VARCHAR2(8) SEQ NUMBER Package DBMS_JAVA:  grant_permission (Vergabe eines positiven Rechts)  restrict_permission (Vergabe eines negativen Rechts)  revoke_permission (Rücknahme eines Rechts)  disable_permission (Ausschalten eines Eintrages der PolicyTable)

© 2003, Rudolf Jansen Administration Beispiel: Leserechte auf C:\tmp für alle, Schreibrechte nur für den User TEST: call dbms_java.grant_permission('PUBLIC', 'java.io.FilePermission', 'C:\tmp\*', 'read'); call dbms_java.grant_permission('TEST', 'java.io.FilePermission', 'C:\tmp\*', 'read,write');

© 2003, Rudolf Jansen Administration select * from user_java_policy where type_name='java.io.FilePermission' and name like '%C:%' KIND GRA... TY... TYPE_NAME NAME ACTION ENABLED SEQ GRANT PUBLIC SYS java.io.FilePermission C:\tmp\* read ENABLED 124 GRANT TEST SYS java.io.FilePermission C:\tmp\* read,write ENABLED Zeilen ausgewählt.

© 2003, Rudolf Jansen Besonderheiten Besonderheiten bei serverseitigen Java-Anwendungen: GUI-Komponenten machen keinen Sinn und werden daher nicht unterstützt (J2SE-)Javasourcecode kann von Java-Client-Applikationen übernommen werden Aufrufstelle ist nicht nur die main-Methode, sondern jede statische Methode kein Connect()-Befehl erforderlich, da Aufruf und Ausführung innerhalb einer Datenbanksession native Compilierung kein Multithreading

© 2003, Rudolf Jansen Threading alle Java-Threads laufen innerhalb eines Betriebssystem- Threads - Multithreaded Java-Code kann übernommen werden - Aber: kein Performancegewinn zu erwarten Empfehlung: - DB-interne Anwendungen mit einem Thread implementieren - falls Parallelverarbeitung in x Threads gewünscht ist:  x Java-Aufrufe in x verschiedenen JVMs starten (pro JVM ca. 40 KB Speicherbedarf)  Koordination der x JVMs übernimmt die DB

© 2003, Rudolf Jansen Wann Java, wann PL/SQL PL/SQL: + datenintensive Anwendungen + Verwendung von SQL-Datentypen Ô keine Typumwandlung + keine zusätzliche JDBC-Schicht Java: + Einsatz von (J2SE-)API-Schnittstellen (Filehandling, Mailversand,...) + Kombination mit XML in der Datenbank Allgemeine Kriterien: - Know-How-Trennung in der Entwicklergruppe - zentrale Administration von DB- und Java-Komponenten - Performance-Tests mit realen Projekt-Daten(mengen)

© 2003, Rudolf Jansen Literatur OTN-Webseiten – Dokumentation – Sourcecode-Beispiele „Oracle, Java, XML. Integration in Oracle 9i“ Rudolf Jansen Software&Support Verlag ca. 360 Seiten ISBN erscheint März 2003