Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=45453
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Tue, 29 Jul 2008 14:58:05 +0000 (14:58 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Tue, 29 Jul 2008 14:58:05 +0000 (14:58 +0000)
Add yet more synchronisation to JDBCRealm.
Based on a patch provided by Santtu Hyrkk.

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@680725 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/realm/JDBCRealm.java

index 1b7e1a2..1b4dc7f 100644 (file)
@@ -38,10 +38,11 @@ import org.apache.catalina.util.StringManager;
 * See the JDBCRealm.howto for more details on how to set up the database and
 * for configuration options.
 *
-* <p><strong>TODO</strong> - Support connection pooling (including message
-* format objects) so that <code>authenticate()</code>,
-* <code>getPassword()</code> and <code>authenticate()</code> do not have to be
-* synchronized and would fix the ugly connection logic. </p>
+* <p>For a <b>Realm</b> implementation that supports connection pooling and
+* doesn't require synchronisation of <code>authenticate()</code>,
+* <code>getPassword()</code>, <code>roles()</code> and
+* <code>getPrincipal()</code> or the ugly connection logic use the
+* <code>DataSourceRealm</code>.</p>
 *
 * @author Craig R. McClanahan
 * @author Carson McDonald
@@ -591,7 +592,7 @@ public class JDBCRealm
     /**
      * Return the Principal associated with the given user name.
      */
-    protected Principal getPrincipal(String username) {
+    protected synchronized Principal getPrincipal(String username) {
 
         return (new GenericPrincipal(this,
                                      username,