我也是 Java 和 Apache Sling 的新手。我一直在尝试将 Sling 与 MongoDB 链接起来,到目前为止我已经做了这些:
- 我在 Sling 控制台中配置了
NoSQL MongoDB 资源提供程序
:
- 然后是
Oak 文档节点存储服务
:
- 最后我运行了
java -Dsling.run.modes=oak_mongo -jar org.apache .sling.launchpad-9.jar -c sling -f -
在 mongodb 模式下运行 sling launchpad。结果如下:
结果,在 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 错误日志
- 配置一个使用 Mongo 的新 Oak NodeStoreService - 但它可能不会被拾取,因为已经有一个 NodeStoreService 正在运行 - Sling 需要一个 NodeStoreService 才能启动。
关于java - 如何在 MongoDB 中存储 Apache Sling 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47236588/