## org.mortbay.http
Class JDBCUserRealm

    java.lang.Object
      |
      +--java.util.AbstractMap
            |
            +--java.util.HashMap
                  |
                  +--org.mortbay.http.HashUserRealm
                        |
                        +--org.mortbay.http.JDBCUserRealm

All Implemented Interfaces:
  java.lang.Cloneable, java.io.Externalizable, java.util.Map, java.io.Serializable, SSORealm, UserRealm

public class JDBCUserRealm
extends HashUserRealm

HashMapped User Realm with JDBC as data source. JDBCUserRealm extends HashUserRealm and adds a method to fetch user information from database. The authenticate() method checks the inherited HashMap for the user. If the user is not found, it will fetch details from the database and populate the inherited HashMap. It then calls the HashUserRealm authenticate() method to perform the actual authentication. Periodically (controlled by configuration parameter), internal hashes are cleared. Caching can be disabled by setting cache refresh interval to zero. Uses one database connection that is initialized at startup. Reconnect on failures. authenticate() is 'synchronized'. An example properties file for configuration is in $JETTY_HOME/etc/jdbcRealm.properties

Version:
  $Id: JDBCUserRealm.java,v 1.12 2003/04/24 23:56:12 bretts Exp $
Author:
  Arkadi Shishlov (arkadi), Fredrik Borgh, Greg Wilkins (gregw), Ben Alex
See Also:
  Serialized Form

Field Summary

Fields inherited from class org.mortbay.http.HashUserRealm
`__SSO`

Constructor Summary
`JDBCUserRealm(java.lang.String name)` Constructor.
`JDBCUserRealm(java.lang.String name, java.lang.String config)` Constructor.

Method Summary
`UserPrincipal` `authenticate(java.lang.String username, java.lang.Object credentials, HttpRequest request)` Authenticate a users credentials.
`UserPrincipal` `authenticate(java.lang.String username, java.lang.String credentials, HttpRequest request)`
`void` `connectDatabase()` (re)Connect to database with parameters setup by loadConfig()
`void` `loadConfig(java.lang.String config)` Load JDBC connection configuration from properties file.

Methods inherited from class org.mortbay.http.HashUserRealm
`addUserToRole, clearSingleSignOn, disassociate, dump, getName, getSingleSignOn, getSSORealm, isUserInRole, load, logout, popRole, pushRole, put, readExternal, setName, setSingleSignOn, setSSORealm, toString, writeExternal`

Methods inherited from class java.util.HashMap
`clear, clone, containsKey, containsValue, entrySet, get, isEmpty, keySet, putAll, remove, size, values`

Methods inherited from class java.util.AbstractMap
`equals, hashCode`

Methods inherited from class java.lang.Object
`getClass, notify, notifyAll, wait, wait, wait`

Methods inherited from interface java.util.Map
`equals, hashCode`

Constructor Detail

### JDBCUserRealm

    public JDBCUserRealm(java.lang.String name)

  Constructor.

Parameters:
  `name` -

### JDBCUserRealm

    public JDBCUserRealm(java.lang.String name,
                         java.lang.String config)
                  throws java.io.IOException,
                         java.lang.ClassNotFoundException,
                         java.lang.InstantiationException,
                         java.lang.IllegalAccessException

  Constructor.

Parameters:
  `name` - Realm name
  `config` - Filename or url of JDBC connection properties file.
Throws:
  `java.io.IOException`
  `java.lang.ClassNotFoundException`
  `java.lang.InstantiationException`
  `java.lang.IllegalAccessException`

Method Detail

### loadConfig

    public void loadConfig(java.lang.String config)
                    throws java.io.IOException

  Load JDBC connection configuration from properties file.

  Parameters:
    `config` - Filename or url of user properties file.
  Throws:
    `java.io.IOException`

### connectDatabase

    public void connectDatabase()

  (re)Connect to database with parameters setup by loadConfig()

### authenticate

    public UserPrincipal authenticate(java.lang.String username,
                                      java.lang.Object credentials,
                                      HttpRequest request)

  Description copied from interface: `UserRealm`
  Authenticate a users credentials. Implementations of this method may adorn the calling context to assoicate it with the authenticated principal (eg ThreadLocals). If such context associations are made, they should be considered valid until a UserRealm.deAuthenticate(UserPrincipal) call is made for this UserPrincipal.

  Specified by:
    `authenticate` in interface `UserRealm`
  Overrides:
    `authenticate` in class `HashUserRealm`
  Parameters:
    `username` - The username.
    `credentials` - The user credentials, normally a String password.
    `request` - The request to be authenticated. Additional parameters may be extracted or set on this request as needed for the authentication mechanism (none required for BASIC and FORM authentication).
  Returns:
    The authenticated UserPrincipal.

### authenticate

    public UserPrincipal authenticate(java.lang.String username,
                                      java.lang.String credentials,
                                      HttpRequest request)

Copyright © 2000 Mortbay Consulting Pty. Ltd. All Rights Reserved.