sql >> Databáze >  >> RDS >> PostgreSQL

tomcat 7 fond připojení JDBC - samostatný fond pro každou databázi?

Dobře, trochu jsem pátral a přišel na to sám. (Děkujeme za mnoho laskavých lidí na mailing listu uživatelů kocourků!)

JB Nizet má pravdu:pokud vytváříte pooly připojení k databázi Tomcat z kódu Java, každý DataSource, který vytvoříte, doslova představuje/představuje samostatný fond připojení. To mě překvapilo; pochází z prostředí .NET, předpokládal jsem, že sdružování připojení Tomcat bude fungovat jako sdružování připojení SqlServer/ADO.NET:pokud k získání dvou databázových připojení použijete dva identické připojovací řetězce, budou obě pocházet ze stejného fondu připojení. V Tomcatu je však při vytváření instance objektů DataSource z kódu Java každá nová instance DataSource zcela novým fondem připojení. Pokud tedy chcete zachovat tyto fondy připojení přes volání webových služeb JAX-RS, musíte si vytvořit vlastní mezipaměť databázového fondu (DataSource), vložit do ní instance DataSource (jednu na databázi) a uložit ji. v objektu, který bude JAX-RS přetrvávat přes volání webových služeb. Právě jsem to udělal a funguje to dobře.

mimochodem, sdružování databázových připojení Tomcat nabízí funkce podobné sdružování připojení SqlServer/ADO.NET, k vytvoření instancí DataSource stačí použít prostředky JNDI. (V mém případě to není možnost, protože databáze jsou v mé aplikaci vytvářeny dynamicky a definice JNDI jsou obecně vytvářeny z konfiguračních souborů, které Tomcat čte při spuštění.)




  1. Můj program není schopen ukládat hodnoty v MySQL pomocí mysql connector lib v Pythonu

  2. Odstraňuje MySQL běžné podvýrazy mezi klauzulemi SELECT a HAVING/GROUP BY

  3. Přepněte databázi ve fondu připojení v nodejs MySQL

  4. Chybový kód MySQL 1452 Omezení cizího klíče