如何在 MongoDB 中存储 Apache Sling 内容?
How to store Apache Sling content in MongoDB?
我也是 Java 和 Apache Sling 的新手。我一直在尝试 link 使用 MongoDB 吊索,这些是我到目前为止所做的:
- 我在 Sling 控制台中配置了
NoSQL MongoDB Resource Provider
:
- 然后
Oak Document Node Store Service
:
- 最后,我 运行
java -Dsling.run.modes=oak_mongo -jar org.apache
.sling.launchpad-9.jar -c sling -f -
在 mongodb 模式下 运行 吊索发射台。这是结果:
因此,在 MongoDB 中创建了一个名为 "sling" 的数据库,我可以通过 Robo-3T(一个 MongoDB 管理工具)看到它:
在使用以下插件通过我的 Maven 应用程序创建一些内容并将其部署到 Sling 后,我能够在 Sling 浏览器中看到我新创建的节点和资源 (http://localhost:8080/bin/browser.html):
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<version>3.3.0</version>
<configuration>
<instructions>
<Sling-Nodetypes>
SLING-INF/nodetypes/nodetypes.cnd
</Sling-Nodetypes>
<Sling-Initial-Content>
SLING-INF/scripts;overwrite:=true;uninstall:=true;path:=/apps/test1/nodes,
SLING-INF/content;overwrite:=true;uninstall:=true;path:=/content/test1
</Sling-Initial-Content>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
但是,我需要将所有内容存储在 MongoDB 数据库中,但目前,数据库中没有存储任何内容。我怎样才能做到这一点?
最简单的方法是使用以下参数启动 Sling Launchpad:-Dsling.run.modes=oak-mongo
。这将确保 Oak 配置为使用 Mongo。您必须删除 sling
目录,否则 运行 模式将不会更改。
您所做的尝试是:
- 添加一个新的资源提供者,它会隐藏存储库根目录中的当前资源提供者。不知道实际效果如何,估计是被拒了-请看sling error log
- 配置一个使用 Mongo 的新 Oak NodeStoreService - 但它可能没有被拾取,因为已经有一个 NodeStoreService 在运行 - Sling 需要一个来启动。
我也是 Java 和 Apache Sling 的新手。我一直在尝试 link 使用 MongoDB 吊索,这些是我到目前为止所做的:
- 我在 Sling 控制台中配置了
NoSQL MongoDB Resource Provider
:
- 然后
Oak Document Node Store Service
:
- 最后,我 运行
java -Dsling.run.modes=oak_mongo -jar org.apache .sling.launchpad-9.jar -c sling -f -
在 mongodb 模式下 运行 吊索发射台。这是结果:
因此,在 MongoDB 中创建了一个名为 "sling" 的数据库,我可以通过 Robo-3T(一个 MongoDB 管理工具)看到它:
在使用以下插件通过我的 Maven 应用程序创建一些内容并将其部署到 Sling 后,我能够在 Sling 浏览器中看到我新创建的节点和资源 (http://localhost:8080/bin/browser.html):
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<version>3.3.0</version>
<configuration>
<instructions>
<Sling-Nodetypes>
SLING-INF/nodetypes/nodetypes.cnd
</Sling-Nodetypes>
<Sling-Initial-Content>
SLING-INF/scripts;overwrite:=true;uninstall:=true;path:=/apps/test1/nodes,
SLING-INF/content;overwrite:=true;uninstall:=true;path:=/content/test1
</Sling-Initial-Content>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
但是,我需要将所有内容存储在 MongoDB 数据库中,但目前,数据库中没有存储任何内容。我怎样才能做到这一点?
最简单的方法是使用以下参数启动 Sling Launchpad:-Dsling.run.modes=oak-mongo
。这将确保 Oak 配置为使用 Mongo。您必须删除 sling
目录,否则 运行 模式将不会更改。
您所做的尝试是:
- 添加一个新的资源提供者,它会隐藏存储库根目录中的当前资源提供者。不知道实际效果如何,估计是被拒了-请看sling error log
- 配置一个使用 Mongo 的新 Oak NodeStoreService - 但它可能没有被拾取,因为已经有一个 NodeStoreService 在运行 - Sling 需要一个来启动。