Как хранить контент Apache Sling в MongoDB?

Я новичок в Java и Apache Sling. Я пытался связать Sling с MongoDB, и вот что я сделал до сих пор:

  1. Я настроил NoSQL MongoDB Resource Provider в слинг консоли:

Конфигурация 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. Это были результаты:

Командная строка

В результате в 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, но в настоящее время ничего не хранится в базе данных. Как мне этого добиться?

1 ответ

Решение

Самый простой способ - запустить Sling Launchpad со следующим аргументом: -Dsling.run.modes=oak-mongo, Это гарантирует, что Дуб настроен для использования Mongo. Вы должны удалить sling каталог, иначе режимы работы не будут изменены.


Что вы сделали с вашими попытками:

  1. добавить новый поставщик ресурсов, который скрывает текущего в корне хранилища. Я не уверен в реальных эффектах, возможно, он отклонен - ​​см. Журнал ошибок слинга
  2. сконфигурируйте новый Oak NodeStoreService, который использует Mongo, но, вероятно, он не подхвачен, поскольку NodeStoreService уже действует - Sling требуется один для запуска.
Другие вопросы по тегам