Jackrabbit repository datastore with Oracle db
PostPosted:Wed Nov 12, 2014 1:36 pm
Hello,
I'm evaluating OpenKM 6.4.14 Professional Trial for possible use in my company. A special requirement is: for safety / security reasons everything has to be stored in oracle db. As far as I can see this means to openKM: Document Metadata and Jackrabbit datastore (document data). Q.: Are there any more? I already fiddled about how to store metadata in oracle, this seems to work fine (even with openKM 6.3 CE...). Then I created jackrabbit repository.xml, wich, I can see in catalina.log, is recognized by openKM. Creation of datastore tables failed, Idon't know why, so I created them manually with 4 oracle.ddl which I found in jackrabbit distribution. On catalina start, there are no errors in catalina.log, But when I try to log on, openKM gives me java.lang.NullPointerException and in tomcat console window I see
Exception in thread "Update Info" java.lang.NullPointerException
at com.openkm.api.OKMStats.getMailsByContext(Unknown Source)
at com.openkm.core.RepositoryInfo.runAs(Unknown Source)
at com.openkm.core.RepositoryInfo.run(Unknown Source)
at com.openkm.core.x.run(Unknown Source)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
This is select table_name from user_tables:
Thanks,
I'm evaluating OpenKM 6.4.14 Professional Trial for possible use in my company. A special requirement is: for safety / security reasons everything has to be stored in oracle db. As far as I can see this means to openKM: Document Metadata and Jackrabbit datastore (document data). Q.: Are there any more? I already fiddled about how to store metadata in oracle, this seems to work fine (even with openKM 6.3 CE...). Then I created jackrabbit repository.xml, wich, I can see in catalina.log, is recognized by openKM. Creation of datastore tables failed, Idon't know why, so I created them manually with 4 oracle.ddl which I found in jackrabbit distribution. On catalina start, there are no errors in catalina.log, But when I try to log on, openKM gives me java.lang.NullPointerException and in tomcat console window I see
Exception in thread "Update Info" java.lang.NullPointerException
at com.openkm.api.OKMStats.getMailsByContext(Unknown Source)
at com.openkm.core.RepositoryInfo.runAs(Unknown Source)
at com.openkm.core.RepositoryInfo.run(Unknown Source)
at com.openkm.core.x.run(Unknown Source)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
This is select table_name from user_tables:
Code: Select all
This is repository.xml (masked connect info):
TABLE_NAME
------------------------------
FSENTRY
JOURNAL
GLOBAL_REVISION
LOCAL_REVISIONS
BUNDLE
REFS
BINVAL
NAMES
NODE
PROP
DATASTORE
Code: Select all
I suppose, jackrabbit still does not find database table. Can you guide me through configuration? <?xml version="1.0"?>
<!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.6//EN"
"http://jackrabbit.apache.org/dtd/repository-1.6.dtd">
<Repository>
<!-- virtual file system where the repository stores global state
(e.g. registered namespaces, custom node types, etc.) -->
<!-- <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${rep.home}/repository"/>
</FileSystem> -->
<FileSystem class="org.apache.jackrabbit.core.fs.db.OracleFileSystem">
<param name="url" value="jdbc:oracle:thin:@server:port:sid"/>
<param name="user" value="***"/>
<param name="password" value="***"/>
<param name="schemaObjectPrefix" value=""/>
<param name="tableSpace" value=""/>
</FileSystem>
<!-- Security configuration -->
<Security appName="OpenKM">
<!-- Access manager: FQN of class implementing the AccessManager interface -->
<AccessManager class="com.openkm.core.OKMAccessManager"/>
<!-- <AccessManager class="org.apache.jackrabbit.core.security.SimpleAccessManager"/> -->
<!-- <AccessManager class="org.apache.jackrabbit.core.security.DefaultAccessManager"> -->
<!-- <param name="config" value="${rep.home}/access.xml"/> -->
<!-- </AccessManager> -->
</Security>
<!-- Location of workspaces root directory and name of default workspace -->
<Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/>
<!-- Workspace configuration template:
used to create the initial workspace if there's no workspace yet -->
<Workspace name="${wsp.name}">
<!-- Virtual file system of the workspace:
class: FQN of class implementing the FileSystem interface -->
<!-- <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${wsp.home}"/>
</FileSystem> -->
<FileSystem class="org.apache.jackrabbit.core.fs.db.OracleFileSystem">
<param name="url" value="jdbc:oracle:thin:@server:port:sid"/>
<param name="user" value="***"/>
<param name="password" value="***"/>
<param name="schemaObjectPrefix" value=""/>
<param name="tableSpace" value=""/>
</FileSystem>
<!-- Persistence manager of the workspace:
class: FQN of class implementing the PersistenceManager interface -->
<!-- <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager">
<param name="driver" value="com.mysql.jdbc.Driver"/>
<param name="url" value="jdbc:mysql://localhost:3306/okm_repo?autoReconnect=true&useUnicode=true&characterEncoding=UTF8"/>
<param name="schema" value="mysql"/>
<param name="user" value="openkm"/>
<param name="password" value="*****"/>
<param name="schemaObjectPrefix" value=""/>
<param name="externalBLOBs" value="false"/>
</PersistenceManager> -->
<PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.OraclePersistenceManager">
<param name="consistencyFix" value="false"/>
<param name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<param name="url" value="jdbc:oracle:thin:@server:port:sid"/>
<param name="user" value="***"/>
<param name="password" value="***"/>
<param name="schema" value=""/>
<param name="schemaObjectPrefix" value=""/>
<param name="blockOnConnectionLoss" value="false"/>
<param name="externalBLOBs" value="false"/>
<param name="bundleCacheSize" value="8"/>
<param name="consistencyCheck" value="false"/>
<param name="minBlobSize" value="16384"/>
<param name="tableSpace" value=""/>
<param name="errorHandling" value=""/>
</PersistenceManager>
<!-- Search index and the file system it uses.
class: FQN of class implementing the QueryHandler interface -->
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${wsp.home}/index"/>
<param name="textFilterClasses" value="
org.apache.jackrabbit.extractor.PlainTextExtractor,
org.apache.jackrabbit.extractor.MsWordTextExtractor,
org.apache.jackrabbit.extractor.MsExcelTextExtractor,
org.apache.jackrabbit.extractor.MsPowerPointTextExtractor,
org.apache.jackrabbit.extractor.OpenOfficeTextExtractor,
org.apache.jackrabbit.extractor.RTFTextExtractor,
org.apache.jackrabbit.extractor.HTMLTextExtractor,
org.apache.jackrabbit.extractor.XMLTextExtractor,
org.apache.jackrabbit.extractor.PngTextExtractor,
org.apache.jackrabbit.extractor.MsOutlookTextExtractor,
com.openkm.extractor.PdfTextExtractor,
com.openkm.extractor.AudioTextExtractor,
com.openkm.extractor.ExifTextExtractor,
com.openkm.extractor.TiffTextExtractor,
com.openkm.extractor.SourceCodeTextExtractor,
com.openkm.extractor.MsOffice2007TextExtractor"/>
<param name="extractorPoolSize" value="2"/>
<param name="supportHighlighting" value="false"/>
<param name="indexingConfiguration" value="${wsp.home}/../../../indexing_configuration.xml"/>
</SearchIndex>
</Workspace>
<!-- Configures the versioning -->
<Versioning rootPath="${rep.home}/version">
<!-- Configures the filesystem to use for versioning for the respective
persistence manager -->
<!-- <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${rep.home}/version" />
</FileSystem> -->
<FileSystem class="org.apache.jackrabbit.core.fs.db.OracleFileSystem">
<param name="url" value="jdbc:oracle:thin:@server:port:sid"/>
<param name="user" value="***"/>
<param name="password" value="***"/>
<param name="schemaObjectPrefix" value=""/>
<param name="tableSpace" value=""/>
</FileSystem>
<!-- Configures the persistence manager to be used for persisting version state.
Please note that the current versioning implementation is based on
a 'normal' persistence manager, but this could change in future
implementations. -->
<!-- <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager">
<param name="driver" value="com.mysql.jdbc.Driver"/>
<param name="url" value="jdbc:mysql://localhost:3306/okm_repo?autoReconnect=true&useUnicode=true&characterEncoding=UTF8"/>
<param name="schema" value="mysql"/>
<param name="user" value="openkm"/>
<param name="password" value="*****"/>
<param name="schemaObjectPrefix" value=""/>
<param name="externalBLOBs" value="false"/>
</PersistenceManager> -->
<PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.OraclePersistenceManager">
<param name="consistencyFix" value="false"/>
<param name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<param name="url" value="jdbc:oracle:thin:@server:port:sid"/>
<param name="user" value="***"/>
<param name="password" value="***"/>
<param name="schema" value=""/>
<param name="schemaObjectPrefix" value=""/>
<param name="blockOnConnectionLoss" value="false"/>
<param name="externalBLOBs" value="false"/>
<param name="bundleCacheSize" value="8"/>
<param name="consistencyCheck" value="false"/>
<param name="minBlobSize" value="16384"/>
<param name="tableSpace" value=""/>
<param name="errorHandling" value=""/>
</PersistenceManager>
</Versioning>
<!-- Search index for content that is shared repository wide
(/jcr:system tree, contains mainly versions) -->
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${rep.home}/repository/index"/>
<param name="textFilterClasses" value=""/>
<param name="extractorPoolSize" value="2"/>
<param name="supportHighlighting" value="false"/>
</SearchIndex>
<!-- DataStore improve file handling performance -->
<!-- <DataStore class="org.apache.jackrabbit.core.data.FileDataStore">
<param name="path" value="${rep.home}/repository/datastore"/>
<param name="minRecordLength" value="100"/>
</DataStore> -->
<DataStore class="org.apache.jackrabbit.core.data.db.DbDataStore">
<param name="url" value="jdbc:oracle:thin:@server:port:sid"/>
<param name="user" value="***"/>
<param name="password" value="***"/>
<param name="databaseType" value="oracle"/>
<param name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<param name="minRecordLength" value="1024"/>
<param name="maxConnections" value="3"/>
<param name="copyWhenReading" value="true"/>
<param name="tablePrefix" value=""/>
<param name="schemaObjectPrefix" value=""/>
</DataStore>
</Repository>
Thanks,