如何在Jackrabbit中导出jcr:security?

时间:2013-05-07 13:39:19

标签: java jackrabbit jcr sling

我正在开发一款带有WCMS的apache吊带。我想导出安全内容(用户和组) 到一个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 个答案:

答案 0 :(得分:2)

我发现在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();