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

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


person Bahman_Aries    schedule 11.11.2017    source источник


Ответы (1)


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


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

  1. добавить нового поставщика ресурсов, который дублирует текущий в корне репозитория. Я не уверен в фактических эффектах, вероятно, он отклонен - ​​см. Журнал ошибок слинга.
  2. настройте новый Oak NodeStoreService, который использует Mongo, но, вероятно, он не будет выбран, поскольку NodeStoreService уже работает — для запуска Sling требуется один.
person Robert Munteanu    schedule 13.11.2017
comment
Большое спасибо, Роберт, удаление каталога sling помогло :) - person Bahman_Aries; 18.11.2017
comment
Со снимком Sling Starter 12 - есть ли еще способ переключения через режим запуска? То есть сделать архив функций, содержащий как хранилища данных tar, так и mongo, и переключаться через командную строку? - person Hans-Peter Störr; 19.05.2021
comment
@ Hans-PeterStörr - я так не думаю. Вы можете попробовать иметь несколько файлов FAR или, может быть, файл FAR со всеми пакетами, а затем два небольших файла функций, которые просто содержат необходимые конфигурации OSGi. - person Robert Munteanu; 26.05.2021