how to get session object from resource resolver factory?

5.4k Views Asked by At
@Component
public class AddNode {
    @Reference
    static ResourceResolverFactory resolverFactory;
    static Session session;

    public static void main(String[] args) throws Exception { 


        ResourceResolver resourceResolver = resolverFactory.getServiceResourceResolver(null);

        session = resourceResolver.adaptTo(Session.class);        
          Node root = session.getRootNode(); 

          Node adobe = root.addNode("ProgramNode"); 
          Node day = adobe.addNode("subnode"); 
          day.setProperty("jcr:title", "programNode"); 

          Node node = root.getNode("ProgramNode/subnode"); 
          System.out.println(node.getPath()); 
          System.out.println(node.getProperty("jcr:title").getString()); 
          session.save(); 
          session.logout();


        }

}

here resolverFactory.getServiceResourceResolver(null); i need to pass any parameter at null.please give some example to get access of repository.

2

There are 2 best solutions below

0
Sandeep Kumar On

We should use System Users to access repository when accessing via Factory. You would need to

  1. Create system user, provide appropriate permissions
  2. Map bundle symbolic name to system user
  3. Use system user to get session via ResourceResolverFactory

    Map<String, Object> param = new HashMap<String, Object>();
    param.put(ResourceResolverFactory.SUBSERVICE, "<sub-service-name>");
    ResourceResolver resolver = null;         
    resolver = resolverFactory.getServiceResourceResolver(param);
    session = resolver.adaptTo(Session.class);
    

You can refer this helpx link article also to get idea about using Service Users to create session

0
Anand Gautam On