【发布时间】:2018-08-23 08:47:50
【问题描述】:
我安装了 magnolia cms 5.7 版并希望对 oracle 数据库进行持久化。在启动 magnolia 实例之前,我更新了相关配置文件并包含了 oracle db 驱动程序。当使用“mgnl start”命令启动实例时,会在数据库中创建表。
但是当我在 cms 中创建新内容(例如用户、联系人)时,数据不会存储到数据库中,而是通过 derby.jar 继续存在。
任何帮助将不胜感激。
提前致谢
您将在下面找到同样在 magnolia.properties 文件中设置的 oracle xml 包
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 2.0//EN" "http://jackrabbit.apache.org/dtd/repository-2.0.dtd">
<Repository>
<DataSources>
<DataSource name="magnolia">
<param name="driver" value="oracle.jdbc.OracleDriver" />
<param name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:xe" /><!-- jdbc:oracle:thin:@localhost:1521:xe -->
<param name="user" value="magnolia" />
<param name="password" value="magnolia" />
<param name="databaseType" value="oracle"/>
<param name="validationQuery" value="select 1 from dual"/>
</DataSource>
</DataSources>
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${rep.home}/repository" />
</FileSystem>
<Security appName="magnolia">
<SecurityManager class="org.apache.jackrabbit.core.DefaultSecurityManager"/>
<AccessManager class="org.apache.jackrabbit.core.security.DefaultAccessManager">
</AccessManager>
<!-- login module defined here is used by the repo to authenticate every request. not by the webapp to authenticate user against the webapp context (this one has to be passed before thing here gets invoked -->
<LoginModule class="info.magnolia.jaas.sp.jcr.JackrabbitAuthenticationModule">
</LoginModule>
</Security>
<DataStore class="org.apache.jackrabbit.core.data.FileDataStore">
<param name="path" value="${rep.home}/repository/datastore"/>
<param name="minRecordLength" value="32000"/>
</DataStore>
<Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default" />
<Workspace name="default">
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${wsp.home}/default" />
</FileSystem>
<PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.OraclePersistenceManager">
<param name="driver" value="oracle.jdbc.OracleDriver"/>
<param name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:xe"/>
<param name="schema" value="oracle" />
<param name="databaseType" value="oracle" />
<param name="user" value="magnolia"/>
<param name="password" value="magnolia"/>
<param name="schemaObjectPrefix" value="${wsp.name}_"/><!-- read notes below to set this value properly -->
<param name="externalBLOBs" value="false"/>
</PersistenceManager>
<SearchIndex class="info.magnolia.jackrabbit.lucene.SearchIndex">
<param name="path" value="${wsp.home}/index" />
<!-- SearchIndex will get the indexing configuration from the classpath, if not found in the workspace home -->
<param name="indexingConfiguration" value="/info/magnolia/jackrabbit/indexing_configuration_${wsp.name}.xml"/>
<param name="useCompoundFile" value="true" />
<param name="minMergeDocs" value="100" />
<param name="volatileIdleTime" value="3" />
<param name="maxMergeDocs" value="100000" />
<param name="mergeFactor" value="10" />
<param name="maxFieldLength" value="10000" />
<param name="bufferSize" value="10" />
<param name="cacheSize" value="1000" />
<param name="forceConsistencyCheck" value="false" />
<param name="autoRepair" value="true" />
<param name="queryClass" value="org.apache.jackrabbit.core.query.QueryImpl" />
<param name="respectDocumentOrder" value="true" />
<param name="resultFetchSize" value="100" />
<param name="extractorPoolSize" value="3" />
<param name="extractorTimeout" value="100" />
<param name="extractorBackLogSize" value="100" />
<!-- needed to highlight the searched term -->
<param name="supportHighlighting" value="true"/>
<!-- custom provider for getting an HTML excerpt in a query result with rep:excerpt() -->
<param name="excerptProviderClass" value="info.magnolia.jackrabbit.lucene.SearchHTMLExcerpt"/>
</SearchIndex>
<WorkspaceSecurity>
<AccessControlProvider class="info.magnolia.cms.core.MagnoliaAccessProvider" />
</WorkspaceSecurity>
</Workspace>
<Versioning rootPath="${rep.home}/version">
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${rep.home}/workspaces/version" />
</FileSystem>
<PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.OraclePersistenceManager">
<param name="driver" value="oracle.jdbc.OracleDriver"/>
<param name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:xe"/>
<param name="schema" value="oracle" />
<param name="databaseType" value="oracle" />
<param name="user" value="magnolia"/>
<param name="password" value="magnolia"/>
<param name="schemaObjectPrefix" value="version_"/><!-- read notes below to set this value properly -->
<param name="externalBLOBs" value="false"/>
</PersistenceManager>
</Versioning>
</Repository>
【问题讨论】:
-
同样的事情,发生在我的 oracle 和 mysql 上。你知道为什么它只创建表不存储数据吗?
-
嗨@Patriot 是的,我已经想通了,请检查第一个答案的 cmets 在 Ducaz035 帮助后我也有一个链接
标签: oracle persistence magnolia