2012-04-10 1 views
3

Meine Web-Anwendung (auf Tomcat bereitgestellt werden) benötigt eine eingebettete Datenbank zum Speichern von temporären Benutzerdaten für einen schnelleren Abruf. Ich habe mich für Apache Embedded Derby entschieden, weil es einfach in eine Webanwendung eingebettet werden kann und eine reine Java DB ist.Embedded Derby mehrere Verbindungen Problem

Ich implementiert auch Verbindungspooling, um Verbindungen abzurufen. Ich stehe hier vor zwei kritischen Problemen (show stopper). Erstens darf Meine Anwendung nicht mehr als zwei aktive Verbindungen gleichzeitig haben. Also, meine Bewerbung legt einfach auf.

Zweitens bekomme ich immer noch eine andere Anwendung hat bereits die Datenbank gestartet. Ich vermute, dass es passiert, wenn eine Verbindung bereits aktiv ist und ich versuche, eine andere Verbindung aus dem Pool zu holen.

Ich habe gelesen, dass Embedded-Derby-Db kann nur eine Verbindung auf einmal haben, dann wie unterstützt es Verbindungspooling durch EmbeddedConnectionPoolDataSource.

Sollte ich jetzt db im Netzwerk Derby oder Embedded Server Derby-Modus ausführen? Ich mag die Idee des Netzwerkmodus nicht, weil ich schnelleres Abrufen benötige. Ich würde lieber MySQL dann verwenden. Und wenn ich db im eingebetteten Server db-Modus, wird es Verbindungspooling und mindestens 50 gleichzeitige Verbindungen unterstützen oder Sollte ich gerade Derby mit anderen eingebetteten Datenbank wie H2 oder HSQL-Datenbank ersetzen, wie ich gelesen habe, dass Derby ist für Schulungszwecke nur und sollte nicht in der Produktionsumgebung verwendet werden? Bitte helfen

+1

Derby wird sicherlich in vielen Produktionsumgebungen eingesetzt, und Derby unterstützt sicherlich viele gleichzeitige Verbindungen. Es ist nicht klar, welche Frage Sie genau stellen und welche Hilfe Sie wünschen. Die Konfiguration des Netzwerkservers ist sehr schnell. Ich fand es sicher schnell genug für meinen Gebrauch. –

+1

Ich laufe Derby im eingebetteten Modus. Meine Frage ist, ob es gleichzeitige Verbindungen im eingebetteten Modus unterstützt. Bei einer aktiven Verbindung verursacht eine andere getConnection() -Methode den folgenden Fehler: "Eine andere Instanz von Derby hat möglicherweise bereits die Datenbank gestartet". – user748316

+0

Ich habe jetzt zwei Möglichkeiten: Entweder wechsele ich in den Netzwerk/Server-Modus oder den Embedded-Server-Modus oder in eine neue Datenbank. Meine Hauptanforderung ist das Verbindungspooling, um gleichzeitige Verbindungen und einen schnelleren Abruf (eingebettete Datenbank) zu unterstützen, so dass ich keine Abfragen im Netzwerk durchführen kann. Bitte assistieren Sie – user748316

Antwort

2

Ich habe Connection Pooling mit Apache Commons dbcp implementiert und es funktioniert perfekt gut und das auch im Embedded-Modus.