2010-11-25 14 views
5

Ich habe eine Situation, in der ich Code ausführen muss, der aus einer Reihe von Gründen (auf die ich hier nicht eingehen werde) besser in Java als in PL/SQL ausgeführt wird. Wie ich es sehe gibt es zwei Möglichkeiten:Java und Oracle - JAR in Oracle laden oder separat ausführen?

  1. ein Glas erstellen mit allen meinen kompilierten Code und andere unterstützende Dateien/andere Gläser, laden Sie das Glas in Oracle (wir 10g laufen lassen), und führen Sie die Java aus eine gespeicherte Prozedur.

  2. Vorteile: Der Java-Code integriert sich sehr gut mit dem Rest des Systems, kann von bestehenden PL/SQL aufgerufen werden.
  3. Nachteile: Ich habe sehr wenig Erfahrung mit dem Ausführen von Java in Oracle.
  4. Lassen Sie das Java in einem separaten Jar und führen Sie es durch Shell-Skripte aus.

    • Pros: Ich habe Java so geschrieben, also bin ich damit vertraut.
    • Nachteile: Schlechte Integration mit allem anderen, wird wahrscheinlich erfordern zusätzliche manuelle Schritte zu laufen und zu verwalten.

Der Code wird Java XML-Daten aus Oracle-Tabellen lesen muß, und Schreiben von Daten (Nicht-XML) zu anderen Tabellen, so machte die Menge der Datenbankintegration denke mir den Java-Code in die Datenbank geladen vielleicht eine gute Idee, aber ich bin nur nicht sicher ...

Welche Erfahrungen haben Menschen Laden und Ausführen von Java-Code von innerhalb von Oracle? Wie einfach ist es zu testen und zu debuggen? Sind spezielle Werkzeuge erforderlich? Irgendwelche "Gotchas" sollte ich beachten?

+0

Wenn Sie tun, um auf eine Menge Daten zugreifen, wird die Ausführung von Java aus der Datenbank besser funktionieren. Lass das Unwissen deine Entscheidungen nicht beeinflussen! – milan

+0

Ich würde vorschlagen, in die JDEveloper IDE zu schauen. Es kennt alle Deployment-Details. –

+0

@ Thorbjørn: Danke. Ich werde es für das nächste Projekt anschauen. Timing ist ein wenig zu eng, um sofort damit zu beginnen, neue IDEs zu installieren/zu konfigurieren/zu lernen, aber ich werde es mir merken. – FrustratedWithFormsDesigner

Antwort

1

Ich würde mit Option Nummer 1 gehen: Laden Sie Ihren Java-Code in Ihre Datenbank. Ich habe gute Erfahrungen mit diesem Ansatz gemacht und Sie brauchen nicht viel Erfahrung, um eine gute Lösung mit dieser Methode zu arbeiten.

Der einzige Teil, in dem Java in Ihre Datenbank eingebettet wird, wird kompliziert (Sie müssen spezielle Berechtigungen für Ihren Java-Code festlegen), wenn Sie Zugriff auf externe Ressourcen benötigen (Netzwerk, Datei-I/O, um ein paar zu nennen) Es ist eindeutig nicht deine Situation in diesem Problem.

+0

Ich würde auf nichts externes zugreifen. Nur die Tabelle, die XML und eine oder zwei andere Tabellen speichert.Mein Hauptanliegen war Testen und Debuggen. Gibt es eine IDE, die diesen Code durchgehen könnte? Außerdem kann ein Teil des Codes, den ich erben kann (wenn ich dies wähle), log4j verwenden, um Anwendungsinformationen zu protokollieren. Ich * könnte * das zu einer Tabelle (oder zu dbms_output?) Umleiten, aber das wäre mehr Arbeit und meine Zeitleisten sind nicht, äh ... luxuriös. ;) – FrustratedWithFormsDesigner

+0

Weiß nicht über ** log4j **. Ich hatte dieses Problem nicht, denn jedes Mal, wenn ich Java-Code schrieb, um auf einer Oracle-Datenbank zu laufen, war es spezifischer Code für ** nur ** diesen Zweck. Über IDE-Unterstützung auch nicht sicher: Sie können ** PL/SQL Developer ** {größte Oracle Frontend jemals IMHO :-)} oder Oracle ** SQL Developer ** überprüfen, ob ihre Debugger Java-Unterstützung haben. –

0

Für Ihr Szenario scheint es die richtige Vorgehensweise, dies in der Datenbank zu tun. Gründe, es zu tun draußen sein könnte:

  • Abhängigkeit von Java-Bibliotheken, die nicht kompatibel sind mit Oracle-interner JVM
  • Notwendigkeit, es unter einem anderen Linux-Benutzerkonto als Oracle

aber laufen Ich sehe auch nicht in Ihrem Szenario