Class JDBCGroupDatabase

java.lang.Object
org.apache.wiki.auth.authorize.JDBCGroupDatabase
All Implemented Interfaces:
GroupDatabase

public class JDBCGroupDatabase
extends Object
implements GroupDatabase

Implementation of GroupDatabase that persists Group objects to a JDBC DataSource, as might typically be provided by a web container. This implementation looks up the JDBC DataSource using JNDI. The JNDI name of the datasource, backing table and mapped columns used by this class can be overridden by adding settings in jspwiki.properties.

Configurable properties are these:

Property Default Definition
jspwiki.groupdatabase.datasource jdbc/GroupDatabase The JNDI name of the DataSource
jspwiki.groupdatabase.table groups The table that stores the groups
jspwiki.groupdatabase.membertable group_members The table that stores the names of group members
jspwiki.groupdatabase.created created The column containing the group's creation timestamp
jspwiki.groupdatabase.creator creator The column containing the group creator's name
jspwiki.groupdatabase.name name The column containing the group's name
jspwiki.groupdatabase.member member The column containing the group member's name
jspwiki.groupdatabase.modified modified The column containing the group's last-modified timestamp
jspwiki.groupdatabase.modifier modifier The column containing the name of the user who last modified the group

This class is typically used in conjunction with a web container's JNDI resource factory. For example, Tomcat versions 4 and higher provide a basic JNDI factory for registering DataSources. To give JSPWiki access to the JNDI resource named by jdbc/GroupDatabase, you would declare the datasource resource similar to this:

<Context ...>
  ...
  <Resource name="jdbc/GroupDatabase" auth="Container"
    type="javax.sql.DataSource" username="dbusername" password="dbpassword"
    driverClassName="org.hsql.jdbcDriver" url="jdbc:HypersonicSQL:database"
    maxActive="8" maxIdle="4"/>
 ...
</Context>

JDBC driver JARs should be added to Tomcat's common/lib directory. For more Tomcat 5.5 JNDI configuration examples, see http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html.

JDBCGroupDatabase commits changes as transactions if the back-end database supports them. Changes are made immediately (during the save(Group, Principal) method).

Since:
2.3