Are you trying this on AEM 6.1?
Try these:
1. Override the "activate" method in your class to instantiate the "ResourceResolver".. here's a sample
@Component(immediate = true, label = "SiteContent Helper", description = "SiteContent Helper") @Service(value = SiteContentHelper.class) @Properties({ @Property(name = Constants.SERVICE_DESCRIPTION, value = "SiteContent Helper") }) public class SiteContentHelper { @Reference private ResourceResolverFactory resolverFactory; private ResourceResolver resourceResolver; private static Session session; private static final String AEM_SUBSERVICE = "readService"; @Activate private void activate(ComponentContext context) { Map<String, Object> param = new HashMap<String, Object>(); param.put(ResourceResolverFactory.SUBSERVICE, AEM_SUBSERVICE); try { resourceResolver = resolverFactory.getServiceResourceResolver(param); } catch (LoginException e) { log.info("..." + e); } } public String getPropertyValueFromRepository(SlingHttpServletRequest request, String propertyName) throws Exception { resourceResolver = request.getResourceResolver(); Session session = resourceResolver.adaptTo(Session.class); .... Node aNode = session.getNode(....); } }2. I'm getting the "resourceResolver" from "request"
3. If in AEM 6.1.. i have defined a "Service User". The below link will help you with the process
http://stackoverflow.com/questions/31350548/resourceresolverfactory-getserviceresourceresolver-throws-exception-in-aem-6-1/31394583#31394583