Author: kkolinko Date: Wed Oct 19 11:40:40 2011 New Revision: 1186114 URL: http://svn.apache.org/viewvc?rev=1186114&view=rev Log: Merged revisions r1186011, r1186104 from tomcat/trunk: Rewrote the DriverManager section in jndi-datasource-examples-howto.xml. The point of view is that driverManagerProtection feature in leak prevention listener is enabled by default. The old warnings about how the things may break thus have much less value.
Modified: tomcat/tc7.0.x/trunk/ (props changed) tomcat/tc7.0.x/trunk/webapps/docs/jndi-datasource-examples-howto.xml Propchange: tomcat/tc7.0.x/trunk/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Oct 19 11:40:40 2011 @@ -1 +1 @@ -/tomcat/trunk:1156115,1156171,1156276,1156304,1156519,1156530,1156602,1157015,1157018,1157151,1157198,1157204,1157810,1157832,1157834,1157847,1157908,1157939,1158155,1158160,1158176,1158195,1158198-1158199,1158227,1158331,1158334-1158335,1158426,1160347,1160592,1160611,1160619,1160626,1160639,1160652,1160720-1160721,1160772,1160774,1160776,1161303,1161310,1161322,1161339,1161486,1161540,1161549,1161584,1162082,1162149,1162169,1162721,1162769,1162836,1162932,1163630,1164419,1164438,1164469,1164480,1164567,1165234,1165247-1165248,1165253,1165273,1165282,1165309,1165331,1165338,1165347,1165360-1165361,1165367-1165368,1165602,1165608,1165677,1165693,1165721,1165723,1165728,1165730,1165738,1165746,1165765,1165777,1165918,1165921,1166077,1166150-1166151,1166290,1166366,1166620,1166686,1166693,1166752,1166757,1167368,1167394,1169447,1170647,1171692,1172233-1172234,1172236,1172269,1172278,1172282,1172556,1172610,1172664,1172689,1172711,1173020-1173021,1173082,1173088,1173090,1173096 ,1173241,1173256,1173288,1173333,1173342,1173461,1173614,1173630,1173659,1173722,1174061,1174239,1174322,1174325,1174329-1174330,1174337-1174339,1174343,1174353,1174799,1174882,1174884,1174983,1175155,1175158,1175167,1175182,1175190,1175201,1175272,1175275,1175283,1175582,1175589-1175590,1175594,1175602,1175613,1175633,1175690,1175713,1175889,1175896,1175907,1176584,1176590,1176799,1177050,1177060,1177125,1177152,1177160,1177245,1177850,1177862,1177978,1178209,1178228,1178233,1178449,1178542,1178681,1178684,1178721,1179268,1179274,1180261,1180865,1180891,1180894,1180907,1181028,1181123,1181125,1181136,1181291,1181743,1182796,1183078,1183105,1183142,1183328,1183339-1183340,1183492-1183494,1183605,1184917,1184919,1185018,1185020,1185200,1185588,1185626,1185756,1185758,1186042-1186045 +/tomcat/trunk:1156115,1156171,1156276,1156304,1156519,1156530,1156602,1157015,1157018,1157151,1157198,1157204,1157810,1157832,1157834,1157847,1157908,1157939,1158155,1158160,1158176,1158195,1158198-1158199,1158227,1158331,1158334-1158335,1158426,1160347,1160592,1160611,1160619,1160626,1160639,1160652,1160720-1160721,1160772,1160774,1160776,1161303,1161310,1161322,1161339,1161486,1161540,1161549,1161584,1162082,1162149,1162169,1162721,1162769,1162836,1162932,1163630,1164419,1164438,1164469,1164480,1164567,1165234,1165247-1165248,1165253,1165273,1165282,1165309,1165331,1165338,1165347,1165360-1165361,1165367-1165368,1165602,1165608,1165677,1165693,1165721,1165723,1165728,1165730,1165738,1165746,1165765,1165777,1165918,1165921,1166077,1166150-1166151,1166290,1166366,1166620,1166686,1166693,1166752,1166757,1167368,1167394,1169447,1170647,1171692,1172233-1172234,1172236,1172269,1172278,1172282,1172556,1172610,1172664,1172689,1172711,1173020-1173021,1173082,1173088,1173090,1173096 ,1173241,1173256,1173288,1173333,1173342,1173461,1173614,1173630,1173659,1173722,1174061,1174239,1174322,1174325,1174329-1174330,1174337-1174339,1174343,1174353,1174799,1174882,1174884,1174983,1175155,1175158,1175167,1175182,1175190,1175201,1175272,1175275,1175283,1175582,1175589-1175590,1175594,1175602,1175613,1175633,1175690,1175713,1175889,1175896,1175907,1176584,1176590,1176799,1177050,1177060,1177125,1177152,1177160,1177245,1177850,1177862,1177978,1178209,1178228,1178233,1178449,1178542,1178681,1178684,1178721,1179268,1179274,1180261,1180865,1180891,1180894,1180907,1181028,1181123,1181125,1181136,1181291,1181743,1182796,1183078,1183105,1183142,1183328,1183339-1183340,1183492-1183494,1183605,1184917,1184919,1185018,1185020,1185200,1185588,1185626,1185756,1185758,1186011,1186042-1186045,1186104 Modified: tomcat/tc7.0.x/trunk/webapps/docs/jndi-datasource-examples-howto.xml URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/jndi-datasource-examples-howto.xml?rev=1186114&r1=1186113&r2=1186114&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/webapps/docs/jndi-datasource-examples-howto.xml (original) +++ tomcat/tc7.0.x/trunk/webapps/docs/jndi-datasource-examples-howto.xml Wed Oct 19 11:40:40 2011 @@ -69,44 +69,40 @@ the section about Automatic Application <section name="DriverManager, the service provider mechanism and memory leaks"> <p><code>java.sql.DriverManager</code> supports the -<a href="http://download.oracle.com/javase/6/docs/api/index.html">service -provider</a> mechanism. However, the implementation is fundamentally broken in -all Java versions for a servlet container environment. -<code>java.sql.DriverManager</code> will only scan the first web application to -use it for JDBC drivers using the service provider mechanism. Any JDBC drivers -present in the web application or any parent class loader will be discovered -correctly (including those in $CATALINA_BASE/lib) but no further scans will be -performed for any other web applications. For example, if there are two web -applications each using a different JDBC driver packaged in WEB-INF/lib, the -service provider mechanism will only work for the first web application to use -DriverManager. The other web application will be required to register the Driver -manually. Given that web application start order is undefined, the service -provider mechanism can not be relied upon for JDBC Driver implementations -packaged in WEB-INF/lib. -</p> - -<p>The <code>java.sql.DriverManager</code> is also a frequent source of memory -leaks. Any Drivers registered with the DriverManager by a web application must -be deregistered when the web application stops. If the service provider -mechanism registers a JDBC driver, it will never deregister it. Tomcat will -attempt to automatically deregister and registered JDBC drivers discovered -when a web application stops. However, it is expected that applications do this -for themselves via a <code>ServletContextListener</code>. -</p> - -<p>There have been reports that the memory leak prevention code that deregisters -JDBC drivers can, in unusual circumstances, trigger a memory leak rather than -fix it. To prevent this, the <a href="config/listeners.html">JRE Memory Leak -Prevention Listener</a> includes protection for the DriverManager. This -protection is enabled by default. Note that a side-effect of enabling this -protection is that while any JDBC Driver implementations packaged with the JVM -or located in $CATALINA_BASE/lib will be correctly discovered by the service -provider mechanism, JDBC Driver implementations packaged in web applications -will not be discovered. It is therefore necessary for applications to manually -register (and deregister) and JDBC drivers they require that are packaged in the -WEB-INF/lib directory. Given the known issues with the service provider -implementation for DriverManager, most web applications will probably be doing -this already.</p> +<a href="http://download.oracle.com/javase/6/docs/api/index.html?java/sql/DriverManager.html">service +provider</a> mechanism. This feature is that all the available JDBC drivers +that announce themselves by providing a <code>META-INF/services/java.sql.Driver</code> +file are automatically discovered, loaded and registered, +relieving you from the need to load the database driver explicitly before +you create a JDBC connection. +However, the implementation is fundamentally broken in all Java versions for +a servlet container environment. The problem is that +<code>java.sql.DriverManager</code> will scan for the drivers only once.</p> + +<p>The <a href="config/listeners.html">JRE Memory Leak Prevention Listener</a> +that is included with Apache Tomcat solves this by triggering the drivers scan +during Tomcat startup. This is enabled by default. It means that only +libraries visible to the listener such as the ones in +<code>$CATALINA_BASE/lib</code> will be scanned for database drivers. +If you are considering disabling this feature, note that +the scan would be triggered by the first web application that is +using JDBC, leading to failures when this web application is reloaded +and for other web applications that rely on this feature. +</p> + +<p>Thus, the web applications that have database drivers in their +<code>WEB-INF/lib</code> directory cannot rely on the service provider +mechanism and should register the drivers explicitly.</p> + +<p>The list of drivers in <code>java.sql.DriverManager</code> is also +a known source of memory leaks. Any Drivers registered +by a web application must be deregistered when the web application stops. +Tomcat will attempt to automatically discover and deregister any +JDBC drivers loaded by the web application class loader when the web +application stops. +However, it is expected that applications do this for themselves via +a <code>ServletContextListener</code>. +</p> </section> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org