如何设置 Apache Sling 以使用关系数据库
Posted
技术标签:
【中文标题】如何设置 Apache Sling 以使用关系数据库【英文标题】:How to set up Apache Sling to use a relational DB 【发布时间】:2019-05-02 18:15:43 【问题描述】:我在使用 Jackrabbit Oak 作为内容存储库的 Sling 11。我想知道如何设置 Sling 以将 JCR 存储库存储在 RDBMS(具体为 DB2)上。
我在Jackrabbit Persistence 上找到了这个链接,但看起来它不适用于 Oak 并且 Oak 文档主要是关于 MongoDB 的。
还找到了Cassandra Resource Provider 的实现,尽管它似乎旨在访问映射到 Cassandra 的特定路径而不使用 Oak。
谢谢,
【问题讨论】:
sling 是作为 jcr 的 Web 界面开发的,并且与 Oak (jcr repo) 硬连线,oak 可以使用不同的持久性后端,例如基于 tar 的段存储、mongodb、aws s3 等。afaik 任何关系数据库不支持 ootb。 我认为是,[oak 1.8 发行说明] (apache.org/dist/jackrabbit/oak/1.8.9/RELEASE-NOTES.txt) 提到了 PostgreSQL 和 RDB*Store 的修复,之前的更新也参考了 DB2。 [RDBDocumentStore] (github.com/apache/jackrabbit-oak/blob/trunk/oak-store-document/…) 源代码也是如此 确实支持DB2。如果您查看 Oak 测试用例或 Oak-run,您将看到如何设置它的示例。 哦..我不知道这一点。 看来我需要将 DB 驱动程序打包到 OSGi 包中,修改 Sling 的配置脚本以将该包推送到 Felix,然后我可以开始在 DocumentNodeStoreService 中设置参数。 【参考方案1】:在这里回答,但归功于Sling user's mailing list
-
将 DB 驱动程序打包在 OSGi bundle 中
下载 Sling 的入门项目
在 boot.txt 中添加一个新的运行模式(在我的情况下是 Oak_db2)
[设置] sling.run.mode.install.options=oak_tar,oak_mongo,oak_db2
下载Sling的数据源项目并编译。
在 Oak.txt 中配置运行模式(这将在 Felix 中为您加载包):
[工件 startLevel=15 runModes=oak_db2] com.h2database/h2-mvstore/1.4.196 com.ibm.db2/jcc4/11.1 org.apache.sling/org.apache.sling.datasource/1.0.3-SNAPSHOT
并设置将管理持久性的服务:
[configurations runModes=oak_db2]
org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService
documentStoreType="RDB"
org.apache.sling.datasource.DataSourceFactory
url="jdbc:db2://10.1.2.3:50000/sling"
driverClassName="com.ibm.db2.jcc.DB2Driver"
username="****"
password="****"
datasource.name="oak"
-
创建一个名为“sling”的数据库。
使用 java -jar -Dsling.run.modes=oak_db2 sling-starter.jar 运行
【讨论】:
以上是关于如何设置 Apache Sling 以使用关系数据库的主要内容,如果未能解决你的问题,请参考以下文章
Sling vs CMIS 作为 Apache jackrabbit 的 REST 接口