2016-02-07 2 views
-3

Я хотел бы знать следующие три способа, которые следует использовать для доступа к данным jcr.Лучший способ получить доступ к данным JCR AEM 6.0/cq5

resolverFactory.getServiceResourceResolver(Map authInfo); 
resolverFactory.getResourceResolver(Map authInfo); 
session.getService('serviceName', null); 

мог бы, пожалуйста, поделиться знаниями об этих конкретных методах и как обеспечить authInfo и в каких случаях каждый из этих методов.

Кажется, от AEM 6.0 и выше метод getAdministrativeResourceResolver устарел из соображений безопасности ??

Спасибо, Шри

ответ

0

С AEM 6.1 вы не можете использовать «администратора», чтобы получить доступ к узлам. Я подробно изложил здесь решение ResourceResolverFactory getServiceResourceResolver throws Exception in AEM 6.1

И вот что я сделал для чтения и записи данных в JCR.

public class InteractHelper { 

    @Reference 
    private ResourceResolverFactory resolverFactory; 
    private ResourceResolver resourceResolver; 

    @Activate 
    private void activate(ComponentContext context) { 
    ... 
    Map<String, Object> param = new HashMap<String, Object>(); 
    // AEM_SUBSERVICE is the service name that you need to define from the OSGI     
    param.put(ResourceResolverFactory.SUBSERVICE, AEM_SUBSERVICE); 

    try { 
     resourceResolver = resolverFactory.getServiceResourceResolver(param); 
    ... 

    } 

    /** Write data to a node */ 
    public void saveToRepository(ResourceResolver resourceResolver, String dataString) throws Exception { 
    Session session = resourceResolver.adaptTo(Session.class); 

    Node userNode; 
    Node userJcrContentNode; 
    String nodePath="";  

    if (session!=null) { 
     Node usersRootNode = session.getNode(USERS_ROOT_FOLDER); 
     userNode = session.getNode(usersRootNode.getPath() + "/" + "suren"); 

     if (userNode!=null) {     
      nodePath = userNode.getPath(); 
     } 

     if (!session.itemExists(nodePath)) { 
      userNode = usersRootNode.addNode("suren", "cq:Page"); 
      userJcrContentNode = userNode.addNode("jcr:content", "cq:PageContent"); 
     } 

     if(!session.itemExists(nodePath+"/jcr:content")){ 
      userJcrContentNode = userNode.addNode("jcr:content", "cq:PageContent");  
     } 
     userJcrContentNode = userNode.getNode("jcr:content"); 
     userJcrContentNode.setProperty("abc-shoppingcart",dataString); 

     // Save the session changes and log out 
     session.save();  
     session.logout(); 
    } 
} 

/** Read data from Node */ 
public void readFromRepository(ResourceResolver resourceResolver, String encodedShoppingCartString) throws Exception { 
    Session session = resourceResolver.adaptTo(Session.class); 

    if (session!=null) { 
     Node usersRootNode = session.getNode(USERS_ROOT_FOLDER); 

     Node userNode = usersRootNode.addNode("suren", "cq:Page"); 
     Node userJcrContentNode = userNode.addNode("jcr:content", "cq:PageContent"); 

     userJcrContentNode = userNode.getNode("jcr:content"); 
     userJcrContentNode.setProperty("abc-shoppingcart",dataString); 

     // Save the session changes and log out 
     session.save();  
     session.logout(); 
    } 
} 
Смежные вопросы