În general, obiect punerea în comun - un container de obiecte din care puteți obține unul dintre acestea la un moment dat. Utilizarea facilităților la piscină au un mod de șablon pentru a rezolva problema instalațiilor de depozitare și de distribuție pentru utilizare temporară.
Pentru dezvoltarea de aplicații, puteți utiliza piscinele de diferite tipuri de obiecte, cum ar fi o piscină fire Pool fir. Acest articol discută doar Connection Pool pool de conexiuni DB.
Este necesară punerea în comun de conectare pentru aplicația web, atunci când toate interogările bazei de date într-un singur loc îmbulzesc la server și a crea o nouă conexiune la baza de date necesită resursoov considerabile. Folosind un bazin de conexiune este justificată strategie mai economică - crearea de conexiuni și monitorizarea stării lor multiple; prin adăugarea de noi după cum este necesar.
Există mai multe implementări de pool-uri de conexiuni la baza de date. Puteți face cu siguranță și punerea în aplicare a acestora. Pericolul acestui risc este că, dacă nu face foarte precise, piscina ar putea „scurgere“ sau obiecte vor „ieși“. Pentru server-side aplicație este un neplăcut - este necesar pentru a controla cantitatea și starea instalațiilor piscină.
Astăzi, există soluții gata făcute. Cel mai important lucru pentru a afla cum să le configurați în mod corespunzător.
Pooling Conexiune - commons dbcp apache, DataSource
Popularul servlet container Apache Tomcat ofera solutia optima pentru crearea dbcp. bazată pe biblioteca apache-commons-dbcp.
apache dbcp sugerează că există un set ( „pool“) conexiuni la baza de date. Atunci când un nou cereri de utilizator nu are acces la baza de date, care le-a emis o conexiune deschisă de la acest bazin. Dacă toate conexiunile deschise sunt deja ocupate, se creează noi. De îndată ce utilizatorul eliberează una dintre conexiunile existente, acesta devine disponibil pentru alți utilizatori. În cazul în care conexiunea nu este utilizat pentru o lungă perioadă de timp, acesta este închis.
Pentru a pune în aplicare de sprijin pentru punerea în comun de conectare este necesar să se treacă prin mai multe etape.
Primul pas este de a declara o resursă (bază de date), într-un context aplicație. Codul sursă este descrisă după cum urmează (de exemplu MySQL):
Contextul aplicație este un fișier XML. Este recomandabil să-l stoca în .ocument_root% / META-INF / context.xml, dar acest lucru nu este singura opțiune. Despre context poate fi citit pe site-ul oficial Tomcat'a: Contextul Container.
Apoi, adăugați un link către această aplicație descriptor web.xml resursă:
Apoi, puteți utiliza piscina de conexiune (conexiune piscina Java) în cerere. Pentru a face acest lucru, veți obține un obiect de conexiune în următorul cod:
Pentru o sursă de date (DataSource) utilizează mecanismul JNDI (mai multe despre el poate fi găsit aici)
Descrierea conexiuni pool este finalizată, este primit conexiunea la cerere, și puteți continua acum cu lucrul cu logica bazei de date - connection.createStatement (). După interogarea ar trebui să închidă conexiunea (connection.close ()). Cu toate acestea, spre deosebire de conexiunea convențională prin intermediul driverului JDBC, această conexiune nu este cu adevărat închisă, ea va fi marcată în piscina ca liber, și va fi posibil de a re-utilizare ulterioară.
Înainte de a reveni la piscina conexiune toate Declarația și ResultSet. obținute cu ajutorul acestui compus sunt închise automat, în conformitate cu API.
Piscină Conexiune C3P0
Piscina conexiune C3P0 este reprezentat de un fișier c3p0-0.9.1.2.jar (versiune poate fi diferit). Abreviere urmează. Conexiune Pool 3.0 => SP30 => C3P0.
Principiul de configurare a resurselor JNDI a fost deja prezentată mai sus. Este necesar să se definească resursele globale, precum și în aplicația web pentru a oferi un link sau pot fi specificate în context.xml. Totul depinde de locul în care bibliotecile și ce configurație de server.
exemplu de configurare C3P0 a unei baze de date MySQL:
Acum setați piscina conexiune este complet nebun. Obiectivul principal este de a crea activitatea astfel încât să fie stabil și operat pentru a rezista la sarcini. Pentru mai multe informații cu privire la semnificația fiecărui parametru poate fi găsit în documentația:
- maxPoolSize și minPoolSize - numărul posibil maxim și minim de conexiuni în piscina
- preferredTestQuery - o cerere care verifică conectarea la baza de date. Depinde de RDBMS special.
- acquireRetryAttempts - numărul de încercări de a se conecta la baza de date, în cazul în care nu este disponibil. Pune-0 dacă vrem să încercăm nu sa sfârșit.
- testConnectionOnCheckout - „lacomi“, dacă este posibil, este cel mai bine să nu utilizeze
Se poate ca Url-ul JDBC conține un ampersand „“. Dacă setarea se realizează prin intermediul XML-fișier, acesta trebuie să loc param1 = value1param2 = valoare2 folosi param1 = value1param2 = valoare2.
Sarcina de a crea un grup de conexiuni la Oracle nu este banală. Documentația furnizată aici
Conexiune punerea în comun la nivelul de aplicații Java, ComboPooledDataSource
Piscina conexiune C3P0 poate fi conectat nu numai la nivelul containerului de aplicare Tomcat, dar, de asemenea, la nivelul cererii. Nu aveți nevoie pentru a crea orice fișiere XML adiționale externe, care sunt menționate mai sus.
Codul de mai jos demonstrează modul de a crea și inițializa piscina conexiune:
Codul de mai jos arată cum să obțineți o conexiune de la piscină și cât de aproape (pentru a reveni la piscina)