Zugriff auf Systemresourcen nicht möglich

JavaFX und die Programmierung

Moderator: wegus

Antworten
AndyK
Beiträge: 7
Registriert: 18.11.2010, 14:42
Wohnort: Baden

Zugriff auf Systemresourcen nicht möglich

Beitrag von AndyK » 19.11.2010, 15:32

Hallo zusammen.

ich vermute mal, dass mein Problem ein Anfänger Fehler ist. Da ich erst vor kurzem mit JavaFx angefangen habe bitte ich um Nachsicht.
Mein Problem ist folgendes ich habe ein Desktopprogramm mit JavaFX programmiert welches aus einer Datenbank liest und neue Daten reinschreibt. Dies funktioniert per "Debug Main Project" bzw. "Run Main Project"einwandfrei. Wenn ich es kompiliert habe funktionieren die Abfragen nicht mehr. Sobald ich im Programm an die Stelle mit einem "insert into..." komme passiert nichts mehr.
Der passende Treiber ist im Packet enthalten. Das Programm startet sowohl unter OS X und Win 7 nur eben keine Abfragen zu Datenbank hin.
Hier mal ein Ausschnitt:

Code: Alles auswählen

    function tBarcodeActionAtsEinlagern(): Void {
        var sql_TuNo: String;
        var sql_TuNoIns: String;
        var sql_IuNo: String;
        var sql_IuNoIns: String;
        sql_TuNo = "select COOLTUID, TUNO from manzdba.xxx_COOLTU where TUNO = \'{tBarcode.text}\'";
        sql_TuNoIns = "insert into manzdba.xxx_COOLTU (CoolTuID,TuNo, KnzEingelagert) values (manzdba.Seq_CoolTu.nextVal,\'{tBarcode.text}\', 'y')";
        sql_IuNo = "select COOLIUID, IUNO from manzdba.xxx_COOLIU where iuno = \'{tBarcode.text}\'";
        sql_IuNoIns = "insert into manzdba.xxx_COOLIU (CoolIuID,IuNo, KnzEingelagert) values (manzdba.Seq_CoolIu.nextVal,\'{tBarcode.text}\', 'y')";

        //Überprüfung ob Eingabe der Barcodelänge entspricht
        println("{tBarcode.text.length()}");

        if (("{tBarcode.text.length()}" == "{intBcLaenge}") and (tBarcode.text.toString().matches("\\d+"))) {
            //Vergleich des Barcodes mit dem Nummernkreis der Behälter
            if ("{intTuNoKreis}" == "{tBarcode.text.charAt(0)}") {
                println("Kühlbehälter");
                println(sql_TuNo);
                ora_wm.query = "{sql_TuNo}";
                ora_wm.fetchData();
                if (ora_wm.getRecordSet().currentField("TUNO").toString().equals("{tBarcode.text}")) {
                    intCoolTuID = Integer.parseInt(ora_wm.getRecordSet().currentField("COOLTUID").toString());
                    ora_wm.getRecordSet().close();
                    ora_wm.update("MANZDBA.xxx_COOLAUFTRAG", [javafx.data.Pair { name: "STATUS" value: "'99'" }, javafx.data.Pair { name: "MODDAT" value: "SYSDATE" }], "COOLTUID = \'{intCoolTuID}\' and STATUS = '70' and GENDAT < SYSDATE");
                }
                //Überprüfung ob Barcode schon vorhanden
                ora_wm.query = "{sql_TuNo}";
                //Daten sofort abrufen
                ora_wm.fetchData();
                println(ora_wm.getRecordSet().currentField("TUNO"));
                println("{ora_wm.getRecordSet().currentField("TUNO")}" != "{tBarcode.text}");

                //Falls Nein "Insert into..."
                if ("{ora_wm.getRecordSet().currentField("TUNO").toString()}" != "{tBarcode.text}") {
                    ora_wm.getRecordSet().close();
                    ora_wm.execute(sql_TuNoIns);
                    println("Insert into....");

                } //Falls Ja "Update where..."
                else {
                    println("Update....");
                    ora_wm.update('MANZDBA.xxx_COOLTU', [javafx.data.Pair { name: "KNZEINGELAGERT" value: "'y'" }], 'TUNO = {tBarcode.text}');
                }
                tBarcode.clear();
            }
......
}
Bin für jeden kleinen Hinweis dankbar.

Mit freundlichen Grüßen

AndyK
Zuletzt geändert von AndyK am 23.11.2010, 11:36, insgesamt 1-mal geändert.
Mac OSX 10.6
Netbeans 6.9
  • JavaFX
  • RegEx Plugin
  • SVN (ServerWin2k8 & Visual SVN)

AndyK
Beiträge: 7
Registriert: 18.11.2010, 14:42
Wohnort: Baden

Re: Sql Befehle werden nicht ausgeführt

Beitrag von AndyK » 20.11.2010, 12:00

Hallo Miteinander,

ich habe noch ein wenig Fehlersuche betrieben. Es scheint nicht am Quellcode zu liegen, zumindest nicht an den Statements, sonder an der Treiber initialisierung.
Wenn ich die *.jnlp mit eingeschalteter Javaconsole starte bekomme ich folgenden Fehler sobald die Anwendung gestartet ist:
oracle.jdbc.driver.OracleDriver registerMBeans
SEVERE: Error while registering Oracle JDBC Diagnosability MBean.
java.security.AccessControlException: access denied (javax.management.MBeanServerPermission createMBeanServer)
.
.
.

und
Exception in thread "AWT-EventQueue-2" java.security.AccessControlException: access denied (java.util.PropertyPermission oracle.jdbc.RetainV9LongBindBehavior read)
.
.
.


Habe ich eventuell etwas vergessen in den Quellcode zu integrieren.
Ich habe die Datenbankverbindung mit Netbeans angelegt, dabei kam dann folgender Code raus:

Code: Alles auswählen

public-read def ora_wm: org.netbeans.javafx.datasrc.DbDataSource = org.netbeans.javafx.datasrc.DbDataSource {
        autoRefresh: true
        connectionString: "jdbc:oracle:thin:@IP-Adresse:Port:SID"
        user: "xxxxx"
        password: "xxxxxx"
        query: "select sysdate from dual"
        lazyLoading: false
    }
Als Treiber verwende ich den "ojdbc6.jar", dieser ist auch im Projekt unter Bibliotheken eingetragen.
Beim Erstellen des Projekts landet dieser auch im Unterordner "/lib"

Sollten noch Angaben fehlen um das Problem einzugrenzen, bitte bescheid sagen.

MfG

AndyK
Mac OSX 10.6
Netbeans 6.9
  • JavaFX
  • RegEx Plugin
  • SVN (ServerWin2k8 & Visual SVN)

AndyK
Beiträge: 7
Registriert: 18.11.2010, 14:42
Wohnort: Baden

Re: Sql Befehle werden nicht ausgeführt

Beitrag von AndyK » 23.11.2010, 11:33

Hallo zusammen,

mit ein wenig "Abstand" zu dem Thema konnte ich den Fehler beheben. Das Problem lag darin, dass die Applikation auf Netzwerkresourcen zugreift. Für diesen Vorgang muss die Applikation mit einem Zertifikat signiert sein, hat man ein solches nicht zur Hand lässt sich die Applikation auch "selbst signieren" per "Projekteigenschaften -> Anwendung -> Selbstsigniertes Jar". Da ich in keinem Tutorial darauf gestoßen bin, dass eine Applikation signiert werden muss, konnte meine Applikation dann natürlich nicht auf Netzwerkresourcen zugreifen. Nach der Selbstsignierung war dies möglich und alles läuft wunderbar.

Somit ist das Problem gelöst.

MfG

AndyK
Mac OSX 10.6
Netbeans 6.9
  • JavaFX
  • RegEx Plugin
  • SVN (ServerWin2k8 & Visual SVN)

Antworten