Lediglich interne DB-Verbindungen (Connections) auslesen - mittels Java

Zrebna

Bekanntes Mitglied
Hi!

Angenommenes Szenario:
Eine interne Anwendung hat aktuell 3 Connections zur DB.
Zwei weitere Anwendungen haben jeweils 2 Verbindungen zur DB.

Wie kommt man nun nur an die 3 Connections der internen DB?
Ziel ist es nämlich den kompletten Hibernate Connection Pool zu droppen, d.h. alle internen Verbindungen.

Ich habe es mittels C3P0 und dem Interface PooledDataSource versucht - aber ich komme nicht an die gewünschten internen Connections.

Hat Jemand evtl. eine Idee, wie man lediglich interne Verbindungen auslesen kann?

Gruß
Zrebna
 

Oneixee5

Top Contributor
Ich bin verblüfft: Von so einem Vorhaben habe ich noch nie gehört. Wozu sollte man das brauchen?
Jede DB bringt verschieden Möglichkeiten der Verwaltung mit. Mit JDBC kannst du dir solche Infos holen, insofern du dazu berechtigt bist. Man holt sich alle Verbindungen zum Client X und droppt sie dann. Für konkrete Maßnahmen braucht man natürlich mehr Infos zur DB.
 

Zrebna

Bekanntes Mitglied
Man holt sich alle Verbindungen zum Client X und droppt sie dann

Du meinst einfach alle Verbindungen zum Client X holen und dann killen?
Dachte, dass man eben nur die gewrappten Connections im Pool droppen will, ohne die zugrundeliegenden reellen Connections zu killen.
Vermutlich verstehe ich das Thema um Connection-Pooling falsch und informier mich mal nochmals genauer - Danke jedenfalls fürs Antworten :)
 

Robert Zenz

Top Contributor
Nur die im Pool "fallen zu lassen" wuerde dazu fuehren dass die Verbindungen am Server noch offen sind fuer diesen Client, der Client aber gar nicht mehr da ist. Also hat man haengende Verbindungen am Server welche zum Verbindungslimit zaehlen, aber nicht mehr verwendet werden koennen. Du musst die Verbindungen im Pool schon schlieszen, damit der Server auch mitbekommt das diese geschlossen und verworfen werden koennen.

Alternativ kannst du das natuerlich auch direkt am Server machen, wie @Oneixee5 sagte. Wenn dein Pool halbwegs gut ist wird dieser beim naechsten Zugriff feststellen dass die Verbindung kacke ist, und eine neue herstellen und deiner Programmlogik zuteilen.
 

Robert Zenz

Top Contributor
Was da natuerlich immer zu beachten ist, wenn man es vom Server aus macht, ob eine Transaktion offen ist oder nicht, und wann die Verbindung das letzte mal verwendet wurde. Transaktionen sind an Verbindungen gekoppelt, also wenn die Verbindung weg ist, ist auch die Transaktion weg.
 

Ähnliche Java Themen

Neue Themen


Oben