JDBC mit mehreren Threads.

Status
Nicht offen für weitere Antworten.
J

java_chris

Gast
Hallo,

ich habe das folgende Problem:
Mit mehren Threads greife ich auf eine Datenbank über JDBC zu. Alle Threads, öffnen eine eigene Datenbankverbindung und arbeiten mit und ohne auto_commit sowie read_only true oder false.
Jetzt scheint es, dass die einzelnen Threads sich gegenseitig blockieren „deadlocks“ obwohl sie teileweise auf verschieden Tabellen sowie immer mit verschiedenen Schlüsseln arbeiten.

Hat jemand eine Idee zu diesem Problem????
 

RicoSoft

Aktives Mitglied
meine erste frage: könnten zu viele connections zum server aufgebaut werden?

ich würde da mit einem pool arbeiten, das ist wahrscheinlich die bessere lösung für das problem, aber so ohne eine zeile code ist es schwierig, das problem zu lokalisieren
 
J

java_chris

Gast
die maximale anzahl der verfügbaren connects wird nicht erreicht.

code..hmm ist sehr lang...müßte ich zusammen streichen.

Läuft ein Thread alleine gibt es keine Probleme. Nach meine Meinung bringt synchronized auch nichts, da die Thrreads auf unterschielde Daten zugreifen.

Was meinst Du als pool. einen eigenständigen thread der alleine die datenbank zugriffe durchführt ?
 

abollm

Top Contributor
java_chris hat gesagt.:
[..]
Was meinst Du als pool. einen eigenständigen thread der alleine die datenbank zugriffe durchführt ?

Er meint vermutlich "connection pooling".

Connection pooling ist so eine Art Caching von Datenbankverbindungen, die im JDBC 2.0 extension API enthalten ist. Das erlaubt dir die Wiederverwendung von DB-Verbindungen und reduziert damit den üblichen Overhead in deinen DB-Applikationen, d.h. es minimiert den Aufwand zum Aufbau und zum Schließen einer oder mehrerer DB-Sessions.
 
J

java_chris

Gast
wenn ich "connection pooling" einsetzen würde, müßte ich die ganze application umschreiben. das problem scheint ja wohl nur aufzutreten, wenn eine veränderung auf der db durchgeführt wird.

gibt es auch eine möglichkeit ohne "connection pooling" auszukommen?
 
J

java_chris

Gast
Jetzt erst einmal eine prinzipielle Frage:

Ist JDBC überhaupt Threadsicher ?????
 

abollm

Top Contributor
java_chris hat gesagt.:
Jetzt erst einmal eine prinzipielle Frage:

Ist JDBC überhaupt Threadsicher ?????

Zunächst zu der obigen Frage:

Ja, JDBC ist threadsicher.

Zu deiner darüber gestellten Frage hinsichtlich der Möglichkeit, ohne "Connection Pooling" auszukommen, würde ich ebenfalls sagen: Ja!

Meine Bemerkung war vor allem als Erklärung auf die obige Antwort von RicoSoft bezogen.

Jetzt aber einige grundsätzliche Dinge zu deinem Problem:

Setzt du ein so genanntes Mutex-Verfahren um deine jeweiligen DB-Aufrufe herum ein, d.h. eine Art Ausschluss mit denen du verhinderst, dass nebenläufige Prozesse _gleichzeitig_ auf deine Daten zugreifen und so unter Umständen inkonsistente Zustände herbeiführen (Deadlock)? Du _musst_ die Prozesse synchronisieren. Du darfst keinen weiteren JDBC-Aufruf starten, solange der andere noch in Bearbeitung ist. Es sei denn, beide haben ihre eigene DB-Verbindung.

Oder anders ausgedrückt: Zwei Threads können sich nicht _gleichzeitig_ einen DB-Connect teilen. Du musst die Zugriffe synchronisieren (single threading).

----------------------------------------------------------------------------

Somit scheint dein Problem ein Synchronisationsproblem zu sein.

BTW: Welche DB nutzt du?
 

Bleiglanz

Gesperrter Benutzer
BTW: Welche DB nutzt du?
WICHTIGE Frage! Manche DBs können nur "Tabellenweise" sperren, und wenn du ohne autocommit arbeitest, dann kann das schon problematisch werden

Frage: sind in deinem Code überhaupt irgendwo synchronized Blöcke? Vielleicht ist es ja ein Java-Deadlock und hat gar nix mit der Datenbank zu tun?
 
J

java_chris

Gast
Hallo,

ich habe das Problem gelößt. Ich hatte bei den lesenden SQL-Statements auto commit eingestellt, dass aber bei der INGRES DB wohl nicht funktioniert. Habe die commit's nun selber gesetzt und es gibt keine Probleme mehr.

Vielen Dank für Eure Anregungen.

java_chris
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Transaktionen von mehreren Anwendungen aus - JDBC Datenbankprogrammierung 3
T [jdbc] einen Eintrag aus mehreren Tabellen löschen (Batch) Datenbankprogrammierung 3
OnDemand JDBC Client Spring: Pool läuft voll Datenbankprogrammierung 6
B SQLite + jdbc + IntelliJ-Consumer = "No suitable driver found..." Datenbankprogrammierung 15
J PC-Start Problem JDBC Connection Datenbankprogrammierung 10
N JDBC SQLITE und Cascading Datenbankprogrammierung 2
D Asynchrone Aufrufe mit jdbc Datenbankprogrammierung 5
Edin JDBC Hilfe Datenbankprogrammierung 2
H JDBC Tabellen ausgeben Datenbankprogrammierung 8
Husamoli345 JSF-JDBC Verbindung Crud Datenbankprogrammierung 15
G MySQL JDBC Metadaten auslesen aus .accdb -> Primärschlüssel manchmal erkannt manchmal nicht Datenbankprogrammierung 3
N Java, sql, jar, JDBC-Treiber in Classpath Datenbankprogrammierung 8
O Create Table per JDBC Fehler: ORA-00922 Datenbankprogrammierung 4
J JDBC anschaulich präsentieren Datenbankprogrammierung 2
Thallius MySQL JDBC auf Linux Server zu mySQL DB auf anderem Linux Server wirft Access denied Datenbankprogrammierung 5
ralfb1105 Oracle JDBC Debugging Datenbankprogrammierung 8
Z [JDBC][MYSQL] Access denied Datenbankprogrammierung 7
Thallius MySQL jdbc schließt Verbindung nach vielen Request von selber Datenbankprogrammierung 8
B MySQL JDBC Kommentarfilter Datenbankprogrammierung 4
Aruetiise MySQL Name JDBC Drive finden Datenbankprogrammierung 4
E Sqlite-jdbc Mitliefern Datenbankprogrammierung 4
R jdbc-Zugriff Nicht erlaubt ? Datenbankprogrammierung 16
S probleme mit dem jdbc treiber Datenbankprogrammierung 1
Thallius MySQL Merkwürdiges JDBC Verhalten bei VPN Verbindung. Datenbankprogrammierung 7
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
F MySQL JDBC Problem Datenbankprogrammierung 5
C JDBC und SQLite Datenbank Datenbankprogrammierung 8
looparda SQLite Active JDBC Abstraktion Datenbankprogrammierung 2
J JDBC SQL Statement mit Parameter Datenbankprogrammierung 7
S JDBC PreparedStatement durchiterieren Datenbankprogrammierung 6
J RESTServie + JDBC + No suitable driver found for jdbc Datenbankprogrammierung 4
KaffeeFan JDBC/ODBC-Bridge entfernt Datenbankprogrammierung 4
S sun.jdbc.odbc.JdbcOdbcDriver wird nicht gefunden Datenbankprogrammierung 2
J Fehlende DatenbankView nach einbeziehen von JDBC Datenbankprogrammierung 3
A Mit JDBC auf postgreSQL Datenbank zugreifen Datenbankprogrammierung 5
C PostgreSQL JDBC + PostgreSQL: getLong liefert 0 statt NULL Datenbankprogrammierung 2
flenst111 SQL-Statement Wie konfiguriert man JDBC-Connect.richtig, damit es bei riesigen Tabs keinen Speicherüberlauf gibt? Datenbankprogrammierung 1
M JDBC Tabellen mit Boolean Spalten können nicht erstellt werden. DB Updaten - wie? Datenbankprogrammierung 6
S JDBC mit Postgres DB connecten Datenbankprogrammierung 3
A Eine MySQL Zeile mit JDBC löschen Datenbankprogrammierung 5
D JDBC - Verständnisfrage Datenbankprogrammierung 2
C Tabelle erstellen mit Apache JDBC-Util Datenbankprogrammierung 1
L Conversion-Error bei JDBC Date Literals Datenbankprogrammierung 3
X MySQL DB-verbindung ohne JDBC/ODBC Datenbankprogrammierung 1
F sun.jdbc.odbc.jdbcodbcdriver wird nicht gefuden Datenbankprogrammierung 3
J Keine Verbindung zu MSSQL DB mit JDBC Datenbankprogrammierung 3
U JDBC prepaird Statements Datenbankprogrammierung 4
B MySQL JDBC Zugriff auf entfernt Datenbank, fehlende Rechte Datenbankprogrammierung 2
Q MySQL JDBC-Treiber Problem Datenbankprogrammierung 2
N MySQL com.microsoft.sqlserver.jdbc.SQLServerException: Die Verbindung wurde geschlossen. Datenbankprogrammierung 1
N JDBC: rollback() bei Exception geht nicht!? Datenbankprogrammierung 1
C Dateipfad des jdbc Treibers Datenbankprogrammierung 2
G JDBC Connect nur über SID fehlerfrei möglich Datenbankprogrammierung 2
R Oracle jdbc Zugriff auf Oracle Datenbankprogrammierung 2
T JDBC Fehler Datenbankprogrammierung 2
J JDBC via Singleton Datenbankprogrammierung 12
Z PostgreSQL JDBC mit Postgresql Datenbankprogrammierung 2
B No suitable driver found for jdbc:oracle:thin:@$HOST:$PORT:$SID Datenbankprogrammierung 7
K JDBC via Netzwerk Datenbankprogrammierung 4
B JDBC Connection Fehler Datenbankprogrammierung 8
K JDBC- In Java "stored procedure" erstellen für DB2,OracleSql ... Datenbankprogrammierung 3
J JDBC in Library|"Treiber konnte nicht geladen werden"" Datenbankprogrammierung 2
B JDBC-Connection: Data source name too long Datenbankprogrammierung 3
D JDBC insert mit select abfrage Datenbankprogrammierung 5
A JDBC Prepared Statement Autoincrement Datenbankprogrammierung 3
H JDBC prüfen ob Table existiert Datenbankprogrammierung 3
crashfinger jdbc-connection mit jre7 funktioniert nicht Datenbankprogrammierung 5
0 JDBC Oracle Verbindungsaufbau Datenbankprogrammierung 6
Q Oracle Linux: ClassNotFoundException: oracle.jdbc.driver.OracleDriver Datenbankprogrammierung 6
B JDBC MySQL Statement Datenbankprogrammierung 3
F Oracle Oracle JDBC Anbindung unter Glassfish 3.1.2 Datenbankprogrammierung 3
V PostgreSQL JDBC Treiber fehlt Datenbankprogrammierung 6
Y JDBC - Datenbankabfrage Webserver Datenbankprogrammierung 4
C JDBC Datenbank funktioniert nicht Datenbankprogrammierung 7
C JDBC , JDO oder JPA Datenbankprogrammierung 17
J MySQL Datenbank konfigurieren, JDBC, MySQL oder Hibernate Datenbankprogrammierung 2
P JDBC Verbindung zur DB klappt nicht Datenbankprogrammierung 6
J Java - JDBC Verbindung zur Datenbank nicht möglich Datenbankprogrammierung 10
K JDBC Buch kaufen? Datenbankprogrammierung 3
K Hibernate vs. JDBC Datenbankprogrammierung 4
K JDBC Driver not found Datenbankprogrammierung 10
GianaSisters Per JDBC auf Microsoft SQL 2005 Datenbankprogrammierung 24
S ich brauche tipps für JDBC Datenbankprogrammierung 4
Paristick MSSQL - JDBC Exception beim Registrieren Datenbankprogrammierung 5
S Applet stucks at SQL Connection (jTDS JDBC) Datenbankprogrammierung 15
R MySQL Voraussetzungen für eine erfolgreiche Datenbankanbindung mittels JDBC Datenbankprogrammierung 2
c_sidi90 JDBC Oracle Connection schlägt fehl Datenbankprogrammierung 2
J jdbc-dataSource in Klassen nutzen Datenbankprogrammierung 2
H Rechnen in Datenbanken - JDBC Mittel der Wahl? Datenbankprogrammierung 32
K MySQL JDBC - Access Datenbank - unbekannter TabellenName Datenbankprogrammierung 4
D JDBC Fehler beim laden der nativen Bibliothek db2jcct2 Datenbankprogrammierung 9
J MySQL Verbindung über JDBC scheitert immer Datenbankprogrammierung 2
I Master/Detail Tabellen mit JDBC und Swing Datenbankprogrammierung 10
S MSSQL JDBC "Driver class not found" Datenbankprogrammierung 9
E Datenbankverbindung mit Oracle JDBC und Eclipse Plugin Quantum db Datenbankprogrammierung 2
ruutaiokwu jdbc connection als singleton Datenbankprogrammierung 11
J MySQL Löschen von Rows mit JDBC Datenbankprogrammierung 9
G JDBC Exception Datenbankprogrammierung 3
Screen Ich suche eine SQLDatenbank ohne JDBC-Treiber Datenbankprogrammierung 12
F Fehlerhandling bei JDBC Datenbankprogrammierung 9

Ähnliche Java Themen


Oben