2011-08-25 14 views
12

Devo gestire le connessioni a più database nella mia app web. Di seguito sono riportati fatti per quanto riguarda l'implementazione attuale:come gestire le connessioni ai database creati dinamicamente

1- Io uso Tomcat

2- database vengono creati in modo dinamico in fase di esecuzione (sto usando mysql)

senza dubbio, avere un pool di connessione per la gestione di database le connessioni sono ottimali. Dato che i database non sono noti all'inizio dell'applicazione, non è stato possibile per me impostare origini dati ed effettuare pool di connessioni. (Non sono riuscito a trovare un modo in Tomcat per creare un pool di connessioni dinamiche: un pool di connessioni creato in fase di runtime).

la mia domanda è: quali altre opzioni devo lavorare in modo efficiente con le connessioni a più database? (Non ho esperienza per implementare i pool di connessione) esiste una libreria che può essere utilizzata con tomcat e mi consente di stabilire più pool di connessione su database diversi in fase di runtime? se no, cosa suggerisci di fare invece dei pool di connessione? Sono abbastanza nuovo con questo problema quindi correggi e guidami se sto inventando concetti.

Grazie in anticipo.

+1

La parola "database" è un po 'ambigua in questo contesto. Intendi "un server di database" o "un database" come in "CREATE DATABASE" o "una tabella di database" come in "CREATE TABLE"? – BalusC

+0

come nel database di creazione. io uso uno schema per cliente (in mysql uno schema è un database). Grazie per l'aiuto. –

+0

Grazie. Ho postato una risposta. – BalusC

risposta

14

Il driver MySQL JDBC permette omettendo il nome del database dall'URL connessione come segue:

jdbc:mysql://localhost:3306

Hai solo bisogno di specificare il database da Connection#setCatalog() o direttamente nelle query SQL. Vedere anche la sua reference documentation:

Se il database non è specificato, la connessione verrà effettuata senza alcun database predefinito. In questo caso, è necessario chiamare il metodo setCatalog() sull'istanza Connection o specificare completamente i nomi di tabella utilizzando il nome del database (ovvero SELECT dbname.tablename.colname FROM dbname.tablename...) nel proprio SQL. Non specificare il database da utilizzare sulla connessione è generalmente utile solo quando si creano strumenti che funzionano con più database, come i gestori di database GUI.

Ciò consente di creare un'origine dati pool di connessioni singole e riutilizzabili in Tomcat. Forse dovrai solo riscrivere il tuo gestore delle connessioni e/o le query SQL.

+1

come esprimo la felicità educatamente? Ho trascorso più di un mese cercando ora solo di scoprire il suo così semplice a causa dell'implementazione specifica del venditore. Grazie. come suggerito, creerò un'origine dati connessa alla connessione (cosa che sono già riuscita a fare) e semplicemente riscriverò le query per indirizzare lo schema corretto. grazie ancora :)))))) –

+1

Prego. Puoi offrire una taglia o inviare qualcosa dalla mia lista dei desideri di Amazon (vedi anche il mio profilo utente) :) – BalusC

+8

done :) primo elemento che era nella lista. –

0

Esistono abbastanza strutture di pool di connessioni in aperto. Proxool è sicuramente tra i migliori. È abbastanza flessibile e facile da usare.

Problemi correlati