org.apache.jackrabbit.core.persistence.db
Class SimpleDbPersistenceManager
java.lang.Object
org.apache.jackrabbit.core.persistence.AbstractPersistenceManager
org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager
org.apache.jackrabbit.core.persistence.db.SimpleDbPersistenceManager
- All Implemented Interfaces:
- PersistenceManager
- Direct Known Subclasses:
- DerbyPersistenceManager, OraclePersistenceManager, SimpleDbPersistenceManager
public class SimpleDbPersistenceManager
- extends DatabasePersistenceManager
SimpleDbPersistenceManager
is a generic JDBC-based
PersistenceManager
for Jackrabbit that persists
ItemState
and NodeReferences
objects using a
simple custom binary serialization format (see Serializer
) and a
very basic non-normalized database schema (in essence tables with one 'key'
and one 'data' column).
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
externalBLOBs
: if true
(the default) BINARY
values (BLOBs) are stored in the local file system;
if false
BLOBs are stored in the database
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:
<PersistenceManager class="org.apache.jackrabbit.core.persistence.db.SimpleDbPersistenceManager">
<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="${wsp.name}_"/>
<param name="externalBLOBs" value="false"/>
</PersistenceManager>
The following is a fragment from a sample configuration using Daffodil One$DB Embedded:
<PersistenceManager class="org.apache.jackrabbit.core.persistence.db.SimpleDbPersistenceManager">
<param name="driver" value="in.co.daffodil.db.jdbc.DaffodilDBDriver"/>
<param name="url" value="jdbc:daffodilDB_embedded:${wsp.name};path=${wsp.home}/../../databases;create=true"/>
<param name="user" value="daffodil"/>
<param name="password" value="daffodil"/>
<param name="schema" value="daffodil"/>
<param name="schemaObjectPrefix" value="${wsp.name}_"/>
<param name="externalBLOBs" value="false"/>
</PersistenceManager>
The following is a fragment from a sample configuration using DB2:
<PersistenceManager class="org.apache.jackrabbit.core.persistence.db.SimpleDbPersistenceManager">
<param name="driver" value="com.ibm.db2.jcc.DB2Driver"/>
<param name="url" value="jdbc:db2:test"/>
<param name="schema" value="db2"/>
<param name="schemaObjectPrefix" value="${wsp.name}_"/>
<param name="externalBLOBs" value="false"/>
</PersistenceManager>
The following is a fragment from a sample configuration using MSSQL:
<PersistenceManager class="org.apache.jackrabbit.core.persistence.db.SimpleDbPersistenceManager">
<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="${wsp.name}_"/>
<param name="externalBLOBs" value="false"/>
</PersistenceManager>
The following is a fragment from a sample configuration using PostgreSQL:
<PersistenceManager class="org.apache.jackrabbit.core.persistence.db.SimpleDbPersistenceManager">
<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="${wsp.name}_"/>
<param name="externalBLOBs" value="false"/>
</PersistenceManager>
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 DerbyPersistenceManager
, OraclePersistenceManager
.
Fields inherited from class org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager |
autoReconnect, blobDeleteSQL, blobFS, blobInsertSQL, blobSelectExistSQL, blobSelectSQL, blobStore, blobUpdateSQL, con, externalBLOBs, INITIAL_BUFFER_SIZE, initialized, nodeReferenceDeleteSQL, nodeReferenceInsertSQL, nodeReferenceSelectExistSQL, nodeReferenceSelectSQL, nodeReferenceUpdateSQL, nodeStateDeleteSQL, nodeStateInsertSQL, nodeStateSelectExistSQL, nodeStateSelectSQL, nodeStateUpdateSQL, propertyStateDeleteSQL, propertyStateInsertSQL, propertyStateSelectExistSQL, propertyStateSelectSQL, propertyStateUpdateSQL, schema, SCHEMA_OBJECT_PREFIX_VARIABLE, schemaObjectPrefix, SLEEP_BEFORE_RECONNECT |
Methods inherited from class org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager |
buildSQLStatements, checkSchema, close, closeConnection, closeResultSet, closeStatement, destroy, destroy, destroy, executeStmt, exists, exists, exists, getSchema, getSchemaDDL, getSchemaObjectPrefix, init, initConnection, initPreparedStatements, isExternalBLOBs, load, load, load, logException, prepareSchemaObjectPrefix, reestablishConnection, resetStatement, setExternalBLOBs, setExternalBLOBs, setSchema, setSchemaObjectPrefix, store, store, store, store |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
driver
protected String driver
url
protected String url
user
protected String user
password
protected String password
SimpleDbPersistenceManager
public SimpleDbPersistenceManager()
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)
getConnection
protected Connection getConnection()
throws RepositoryException,
SQLException
- Returns a JDBC connection acquired using the JDBC
DriverManager
.
- Overrides:
getConnection
in class DatabasePersistenceManager
- Returns:
- new connection
- Throws:
SQLException
RepositoryException
- if the driver could not be loaded
SQLException
- if the connection could not be established- See Also:
DatabasePersistenceManager.getConnection()
Copyright © 2004-2008 The Apache Software Foundation. All Rights Reserved.