Hallo,
ich habe ein Programm geschrieben, das auf eine Derby-Datenbank (Embedded) zugreift.
Das Programm liest nur. Beim Verbindungsaufbau wird die Datenbank auf "read-only" gesetzt.
Es werden keine Daten geschrieben. Es erfolgt kein gleichzeitiger Zugriff von mehreren Anwendungen auf die Datenbank.
In meiner Entwicklungsumgebung (Eclipse) greife ich auf die ungepackte Datenbank zu, da ich in dieser infolge der Programmierung immer wieder kleinere Datensätze hinzufügen muß.
Es funktioniert auch alles. Der Verbindungsaufbau, die Abfragen und der Verbindungsabbau bei Programmbeendigung.
Jetzt wollte ich das Programm auf einen anderen Rechner zu Vorführungszwecken installieren (wenn man das so sagen kann).
Ich habe die Datenbank in eine Jar-Datei gepackt. Habe das Programm kompiliert und ebenfalls in eine Jar gepackt. (Den Verbindungsaufbau zur DB habe ich natürlich angepaßt. Ein entsprechendes Manifest habe ich auch erstellt.) Die derby.jar ist auch vorhanden.
(Später soll das Programm mit der Datenbank und Derby über WebStart verteilt werden.)
Ich kann das Programm ohne Probleme starten, der Verbindungsaufbau zur Datenbank in der Jar funktioniert auch, ABER bei manchen Abfragen kommen folgende Fehlermeldungen:
Die Verbindung zur Datenbank in der Jar funktioniert. Ein Großteil der Abfragen funktioniert ebenfalls. Der Verbindungsabbau klappt auch. Im log-File steht nichts über diese geworfenen Fehler. (Nur, daß die Verbindung aufgebaut wurde, mehr nicht.)
Und deshalb meine Frage: Warum funktioniert alles, wenn die Datenbank nicht in eine Jar gepackt ist, und warum funktionieren auf einmal bestimmte Abfragen nicht mehr, sobald die Datenbank in eine Jar gepackt wurde? ???:L
Der Umstand, daß die DB in einer Jar ist, sollte sich doch nicht auf Ihre Funktion auswirken. Zumal die DB ja im "read-only"-Modus betrieben wird.
Hat irgendjemand von euch schon so was ähnliches erlebt und weiß, wie man dieses Problem lösen kann?
Ich werde mir mal die Abfragen genauer anschauen (sind teilweise ziemlich komplizierte und aufwendige SQL-Abfragen) um herauszufinden, ob es da eine Gemeinsamkeit gibt.
Ich hoffe, irgendjemand von euch hat hierzu eine Idee.
MfG
hansmueller
ich habe ein Programm geschrieben, das auf eine Derby-Datenbank (Embedded) zugreift.
Das Programm liest nur. Beim Verbindungsaufbau wird die Datenbank auf "read-only" gesetzt.
Es werden keine Daten geschrieben. Es erfolgt kein gleichzeitiger Zugriff von mehreren Anwendungen auf die Datenbank.
In meiner Entwicklungsumgebung (Eclipse) greife ich auf die ungepackte Datenbank zu, da ich in dieser infolge der Programmierung immer wieder kleinere Datensätze hinzufügen muß.
Es funktioniert auch alles. Der Verbindungsaufbau, die Abfragen und der Verbindungsabbau bei Programmbeendigung.
Jetzt wollte ich das Programm auf einen anderen Rechner zu Vorführungszwecken installieren (wenn man das so sagen kann).
Ich habe die Datenbank in eine Jar-Datei gepackt. Habe das Programm kompiliert und ebenfalls in eine Jar gepackt. (Den Verbindungsaufbau zur DB habe ich natürlich angepaßt. Ein entsprechendes Manifest habe ich auch erstellt.) Die derby.jar ist auch vorhanden.
(Später soll das Programm mit der Datenbank und Derby über WebStart verteilt werden.)
Ich kann das Programm ohne Probleme starten, der Verbindungsaufbau zur Datenbank in der Jar funktioniert auch, ABER bei manchen Abfragen kommen folgende Fehlermeldungen:
java.sql.SQLException: Ein Feature ist nicht implementiert.
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(Unknown Source)
at Datenbankanbindung.mAbfrageElementSonstiges(Datenbankanbindung.java:8758)
...
Caused by: java.sql.SQLException: Ein Feature ist nicht implementiert.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
... 14 more
Caused by: ERROR XSAI3: Ein Feature ist nicht implementiert.
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.impl.store.raw.log.ReadOnly.checkVersion(Unknown Source)
at org.apache.derby.impl.store.raw.RawStore.checkVersion(Unknown Source)
at org.apache.derby.impl.store.access.RAMTransaction.checkVersion(Unknown Source)
at org.apache.derby.impl.store.access.heap.HeapConglomerateFactory.createConglomerate(Unknown Source)
at org.apache.derby.impl.store.access.RAMTransaction.createConglomerate(Unknown Source)
at org.apache.derby.iapi.store.access.DiskHashtable.<init>(Unknown Source)
at org.apache.derby.iapi.store.access.BackingStoreHashtable.spillToDisk(Unknown Source)
at org.apache.derby.iapi.store.access.BackingStoreHashtable.add_row_to_hash_table(Unknown Source)
at org.apache.derby.iapi.store.access.BackingStoreHashtable.putRow(Unknown Source)
at org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetchRows(Unknown Source)
at org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetchSet(Unknown Source)
at org.apache.derby.impl.store.access.BackingStoreHashTableFromScan.<init>(Unknown Source)
at org.apache.derby.impl.store.access.RAMTransaction.createBackingStoreHashtableFromScan(Unknown Source)
at org.apache.derby.impl.sql.execute.HashScanResultSet.openCore(Unknown Source)
at org.apache.derby.impl.sql.execute.JoinResultSet.openRight(Unknown Source)
at org.apache.derby.impl.sql.execute.JoinResultSet.openCore(Unknown Source)
at org.apache.derby.impl.sql.execute.JoinResultSet.openCore(Unknown Source)
at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown Source)
at org.apache.derby.impl.sql.execute.UnionResultSet.openCore(Unknown Source)
at org.apache.derby.impl.sql.execute.SortResultSet.openCore(Unknown Source)
at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(Unknown Source)
at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source)
at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
... 8 more
Die Verbindung zur Datenbank in der Jar funktioniert. Ein Großteil der Abfragen funktioniert ebenfalls. Der Verbindungsabbau klappt auch. Im log-File steht nichts über diese geworfenen Fehler. (Nur, daß die Verbindung aufgebaut wurde, mehr nicht.)
Und deshalb meine Frage: Warum funktioniert alles, wenn die Datenbank nicht in eine Jar gepackt ist, und warum funktionieren auf einmal bestimmte Abfragen nicht mehr, sobald die Datenbank in eine Jar gepackt wurde? ???:L
Der Umstand, daß die DB in einer Jar ist, sollte sich doch nicht auf Ihre Funktion auswirken. Zumal die DB ja im "read-only"-Modus betrieben wird.
Hat irgendjemand von euch schon so was ähnliches erlebt und weiß, wie man dieses Problem lösen kann?
Ich werde mir mal die Abfragen genauer anschauen (sind teilweise ziemlich komplizierte und aufwendige SQL-Abfragen) um herauszufinden, ob es da eine Gemeinsamkeit gibt.
Ich hoffe, irgendjemand von euch hat hierzu eine Idee.
MfG
hansmueller