Class DbFileSystem

  • All Implemented Interfaces:
    org.apache.jackrabbit.core.fs.FileSystem, org.apache.jackrabbit.core.util.db.DatabaseAware
    Direct Known Subclasses:
    DB2FileSystem, DerbyFileSystem, MSSqlFileSystem, OracleFileSystem

    public class DbFileSystem
    extends DatabaseFileSystem
    implements org.apache.jackrabbit.core.util.db.DatabaseAware
    DbFileSystem is a generic JDBC-based FileSystem implementation for Jackrabbit that persists file system entries in a database table.

    It is configured through the following properties:

    • driver: the FQN name of the JDBC driver class
    • url: the database url of the form jdbc:subprotocol:subname
    • user: the database user
    • password: the user's password
    • schema: type of schema to be used (e.g. mysql, mssql, etc.);
    • schemaObjectPrefix: prefix to be prepended to schema objects
    The required schema objects are automatically created by executing the DDL statements read from the [schema].ddl file. The .ddl file is read from the resources by calling getClass().getResourceAsStream(schema + ".ddl"). Every line in the specified .ddl file is executed separatly by calling java.sql.Statement.execute(String) where every occurence of the the string "${schemaObjectPrefix}" has been replaced with the value of the property schemaObjectPrefix.

    The following is a fragment from a sample configuration using MySQL:

       <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
           <param name="driver" value="com.mysql.jdbc.Driver"/>
           <param name="url" value="jdbc:mysql:///test?autoReconnect=true"/>
           <param name="schema" value="mysql"/>
           <param name="schemaObjectPrefix" value="rep_"/>
       </FileSystem>
     
    The following is a fragment from a sample configuration using Daffodil One$DB Embedded:
       <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
           <param name="driver" value="in.co.daffodil.db.jdbc.DaffodilDBDriver"/>
           <param name="url" value="jdbc:daffodilDB_embedded:rep;path=${rep.home}/databases;create=true"/>
           <param name="user" value="daffodil"/>
           <param name="password" value="daffodil"/>
           <param name="schema" value="daffodil"/>
           <param name="schemaObjectPrefix" value="rep_"/>
       </FileSystem>
     
    The following is a fragment from a sample configuration using MSSQL:
       <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
           <param name="driver" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
           <param name="url" value="jdbc:microsoft:sqlserver://localhost:1433;;DatabaseName=test;SelectMethod=Cursor;"/>
           <param name="schema" value="mssql"/>
           <param name="user" value="sa"/>
           <param name="password" value=""/>
           <param name="schemaObjectPrefix" value="rep_"/>
       </FileSystem>
     
    The following is a fragment from a sample configuration using Ingres:
       <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
           <param name="driver" value="com.ingres.jdbc.IngresDriver"/>
           <param name="url" value="jdbc:ingres://localhost:II7/test"/>
           <param name="schema" value="ingres"/>
           <param name="user" value="ingres"/>
           <param name="password" value="ingres"/>
           <param name="schemaObjectPrefix" value="rep_"/>
       </FileSystem>
     
    The following is a fragment from a sample configuration using PostgreSQL:
       <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
           <param name="driver" value="org.postgresql.Driver"/>
           <param name="url" value="jdbc:postgresql://localhost/test"/>
           <param name="schema" value="postgresql"/>
           <param name="user" value="postgres"/>
           <param name="password" value="postgres"/>
           <param name="schemaObjectPrefix" value="rep_"/>
       </FileSystem>
     
    JNDI can be used to get the connection. In this case, use the javax.naming.InitialContext as the driver, and the JNDI name as the URL. If the user and password are configured in the JNDI resource, they should not be configured here. Example JNDI settings:
     <param name="driver" value="javax.naming.InitialContext" />
     <param name="url" value="java:comp/env/jdbc/Test" />
     
    See also DerbyFileSystem, DB2FileSystem, OracleFileSystem.
    • Field Detail

      • driver

        protected String driver
        the full qualified JDBC driver name
      • url

        protected String url
        the JDBC connection URL
      • user

        protected String user
        the JDBC connection user
      • password

        protected String password
        the JDBC connection password
      • dataSourceName

        protected String dataSourceName
    • Constructor Detail

      • DbFileSystem

        public DbFileSystem()
    • Method Detail

      • setConnectionFactory

        public void setConnectionFactory​(org.apache.jackrabbit.core.util.db.ConnectionFactory connnectionFactory)
        Specified by:
        setConnectionFactory in interface org.apache.jackrabbit.core.util.db.DatabaseAware
      • getUrl

        public String getUrl()
      • setUrl

        public void setUrl​(String url)
      • getUser

        public String getUser()
      • setUser

        public void setUser​(String user)
      • getPassword

        public String getPassword()
      • setPassword

        public void setPassword​(String password)
      • getDriver

        public String getDriver()
      • setDriver

        public void setDriver​(String driver)
      • getDataSourceName

        public String getDataSourceName()
      • setDataSourceName

        public void setDataSourceName​(String dataSourceName)
      • hashCode

        public int hashCode()
        Returns zero to satisfy the Object equals/hashCode contract. This class is mutable and not meant to be used as a hash key.
        Overrides:
        hashCode in class DatabaseFileSystem
        Returns:
        always zero
        See Also:
        Object.hashCode()