2013-05-07 60 views
1

我正在開發apache sling WCMS。我想將安全內容(用戶和組) 導出到xml文件。如何在Jackrabbit中導出jcr:安全性?

我用下面的代碼,但有一個例外:

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).... 

是否導出用戶和組正確的方法?

任何幫助表示讚賞。

回答

2

我發現我被忽略,其中rep:security位於。 rep:securitysecurity存儲庫的工作區,所以如果我想導出它的內容,我應該先登錄安全工作區。

我糾正代碼如下,並可以導出代表:安全:

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();