Как экспортировать jcr:security в Jackrabbit?
Я занимаюсь разработкой Apache Sling WCMS. Я хочу экспортировать содержимое безопасности (пользователи и группы) в файл XML.
Я использовал следующий код, но есть исключение:
OutputStream output = new FileOutputStream("d:\\bk.xml");
session.exportSystemView("/rep:security", output, false, false);
output.flush();
output.close();
И исключение здесь:
javax.jcr.PathNotFoundException: /rep:security
at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:545)
at org.apache.jackrabbit.core.SessionImpl.getItem(SessionImpl.java:876)
at org.apache.jackrabbit.commons.AbstractSession.export(AbstractSession.
java:541)
at org.apache.jackrabbit.commons.AbstractSession.exportDocumentView(Abst
ractSession.java:237)
at org.apache.jackrabbit.commons.AbstractSession.exportDocumentView(Abst
ractSession.java:279)....
Это верный способ экспортировать пользователей и группы?
Любая помощь приветствуется.
1 ответ
Решение
Я обнаружил, что меня игнорировали, где rep:security
расположен. rep:security
в security
Рабочая область хранилища, поэтому, если я хочу экспортировать его содержимое, я должен войти в рабочую область безопасности раньше.
Я исправил код следующим образом и мог экспортировать rep:security:
Session securitySession = session.getRepository().login(new SimpleCredentials("admin", "XXX".toCharArray()), "security");
OutputStream output = new FileOutputStream("d:\\bk.xml");
securitySession.exportSystemView("/rep:security", output, false, false);
output.flush();
output.close();