{"id":1240,"date":"2012-02-16T11:23:19","date_gmt":"2012-02-16T09:23:19","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=1240"},"modified":"2012-02-16T11:23:36","modified_gmt":"2012-02-16T09:23:36","slug":"inselupdate-gepoolte-verbindungen","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2012\/02\/inselupdate-gepoolte-verbindungen\/","title":{"rendered":"Inselupdate: Gepoolte Datenbankverbindungen"},"content":{"rendered":"<p>Da der Auf- und Abbau von Datenbankverbindungen relativ teuer ist, soll eine Java-Applikation die Verbindung nur vordergr\u00fcndig schlie\u00dfen, ein spezieller pooling-f\u00e4higer Datenbanktreiber soll die Verbindung allerdings f\u00fcr die n\u00e4chste Operation offen halten. F\u00fcr gepoolte Datenbankverbindungen gibt es eine Reihe quelloffener Implementierungen; zu ihnen z\u00e4hlen Apache Commons DBCP (http:\/\/commons.apache.org\/dbcp\/)<ins datetime=\"2012-02-16T09:47\" cite=\"mailto:Christian\">, <\/ins><i><ins datetime=\"2012-02-16T09:52\" cite=\"mailto:Christian\">c3p0<\/ins><\/i><ins datetime=\"2012-02-16T09:52\" cite=\"mailto:Christian\"> (<a href=\"http:\/\/sourceforge.net\/projects\/c3p0\/\">http:\/\/sourceforge.net\/projects\/c3p0\/<\/a>)<\/ins> und Proxool (http:\/\/proxool.sourceforge.net\/).<\/p>\n<p>In der Regel sind f\u00fcr den Programmierer gepoolete Datenbankverbindungen transparent, denn ein poolender Treiber verh\u00e4lt sich wie ein ganz normaler JDBC-Treiber. Jeder Java EE-Container nutzt standardm\u00e4\u00dfig gepoolte Verbindungen, sodass sich Enterprise-Entwickler damit nicht besch\u00e4ftigen m\u00fcssen \u2013 nur Administratoren m\u00fcssen spezielle Eigenschaften wie die maximale Anzahl offener Verbindungen konfigurieren. In Client-Anwendungen ist die Nutzung anders, auch der Bezug einer Verbindung. Bei Proxool wird zum Beispiel statt der JDBC-Treiberklasse die Proxool-Treiberklasse genannt, und die der Verbindungs-URL kodiert dann die eigentlichen JDBC-Treiberklasse; das sieht etwa so aus: Class.forName(&quot;org.logicalcobwebs.proxool.ProxoolDriver&quot;); con = DriverManager.getConnection(&quot;proxool.example:org.hsqldb.jdbcDriver:jdbc:hsqldb:file:TutegoDB&quot;);. Anders ist das bei c3po, hier wird eine spezielle Klasse ComboPooledDataSource eingesetzt, die vom Typ DataSource ist.[1]<ins datetime=\"2012-02-16T09:57\" cite=\"mailto:Christian\"><\/ins><\/p>\n<p>Simple-JNDI (<a href=\"http:\/\/openbook.galileocomputing.de\/javainsel9\/javainsel_24_011.htm\">http:\/\/openbook.galileocomputing.de\/javainsel9\/javainsel_24_011.htm<\/a>) unterst\u00fctzt DBCP direkt, sodass wir es an dieser Stelle einsetzen wollen. Eine zus\u00e4tzliche Zeile pool=true in der Konfigurationsdatei veranlasst Simple-JNDI dazu:<\/p>\n<p><a name=\"_Ref310408650\">Listing <\/a>1.14: TutegoDS.properties<\/p>\n<p>type=javax.sql.DataSource   <br \/>driver=org.hsqldb.jdbcDriver    <br \/>url=jdbc:hsqldb:file:TutegoDB;shutdown=true    <br \/>user=sa    <br \/>password=    <br \/>pool=true<\/p>\n<p>Dazu sind in den Klassenpfad das Haupt-Archiv commons-dbcp-1.4.jar (Download unter http:\/\/commons.apache.org\/dbcp\/download_dbcp.cgi) und zus\u00e4tzlich das Java-Archiv commons-pool-1.3.jar (von Jakarta Commons Pool, Download unter http:\/\/commons.apache.org\/pool\/download_pool.cgi) aufzunehmen.<\/p>\n<hr size=\"1\" width=\"33%\" \/>\n<p><a href=\"file:\/\/\/C:\/Users\/Christian\/Documents\/My Dropbox\/Insel\/2\/#_ftnref1_2909\" name=\"_ftn1_2909\"><ins datetime=\"2012-02-16T10:02\" cite=\"mailto:Christian\">[1]<\/ins><\/a><ins datetime=\"2012-02-16T10:02\" cite=\"mailto:Christian\"> Weitere Details unter <\/ins><ins datetime=\"2012-02-16T10:02\" cite=\"mailto:Christian\"><a href=\"http:\/\/www.mchange.com\/projects\/c3p0\/index.html\">http:\/\/www.mchange.com\/projects\/c3p0\/index.html<\/a><\/ins><ins datetime=\"2012-02-16T10:02\" cite=\"mailto:Christian\">.<\/ins><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Da der Auf- und Abbau von Datenbankverbindungen relativ teuer ist, soll eine Java-Applikation die Verbindung nur vordergr\u00fcndig schlie\u00dfen, ein spezieller pooling-f\u00e4higer Datenbanktreiber soll die Verbindung allerdings f\u00fcr die n\u00e4chste Operation offen halten. F\u00fcr gepoolte Datenbankverbindungen gibt es eine Reihe quelloffener Implementierungen; zu ihnen z\u00e4hlen Apache Commons DBCP (http:\/\/commons.apache.org\/dbcp\/), c3p0 (http:\/\/sourceforge.net\/projects\/c3p0\/) und Proxool (http:\/\/proxool.sourceforge.net\/). In der [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[11],"tags":[],"class_list":["post-1240","post","type-post","status-publish","format-standard","hentry","category-insel"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=1240"}],"version-history":[{"count":2,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1240\/revisions"}],"predecessor-version":[{"id":1242,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1240\/revisions\/1242"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1240"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}