Как хранить контент Apache Sling в MongoDB?
Я новичок в Java и Apache Sling. Я пытался связать Sling с MongoDB, и вот что я сделал до сих пор:
- Я настроил
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, но в настоящее время ничего не хранится в базе данных. Как мне этого добиться?
1 ответ
Самый простой способ - запустить Sling Launchpad со следующим аргументом: -Dsling.run.modes=oak-mongo
, Это гарантирует, что Дуб настроен для использования Mongo. Вы должны удалить sling
каталог, иначе режимы работы не будут изменены.
Что вы сделали с вашими попытками:
- добавить новый поставщик ресурсов, который скрывает текущего в корне хранилища. Я не уверен в реальных эффектах, возможно, он отклонен - см. Журнал ошибок слинга
- сконфигурируйте новый Oak NodeStoreService, который использует Mongo, но, вероятно, он не подхвачен, поскольку NodeStoreService уже действует - Sling требуется один для запуска.