2

我也是 Java 和 Apache Sling 的新手。我一直在尝试将 Sling 与 MongoDB 联系起来,这些是我迄今为止所做的:

  1. NoSQL MongoDB Resource Provider在 Sling 控制台中配置:

NoSQL 配置

  1. 然后Oak Document Node Store Service

橡木配置

  1. 最后我跑去java -Dsling.run.modes=oak_mongo -jar org.apache .sling.launchpad-9.jar -c sling -f -以 mongodb 模式运行 sling 启动板。这是结果:

命令提示符

结果,在 MongoDB 中创建了一个名为“sling”的数据库,我可以通过 Robo-3T(一个 MongoDB 管理工具)看到它:

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 数据库中,但目前,数据库中没有存储任何内容。我怎样才能做到这一点?

4

1 回答 1

3

最简单的方法是使用以下参数启动 Sling Launchpad -Dsling.run.modes=oak-mongo:. 这将确保 Oak 配置为使用 Mongo。您必须删除该sling目录,否则运行模式不会改变。


你所做的尝试是:

  1. 添加一个新的资源提供者,它会在存储库根目录中隐藏当前的资源提供者。我不确定实际效果,可能会被拒绝 - 请参阅 sling 错误日志
  2. 配置一个使用 Mongo 的新 Oak NodeStoreService - 但它可能没有被拾取,因为已经有一个 NodeStoreService 在运行 - Sling 需要启动一个。
于 2017-11-13T13:24:44.517 回答