Expand my Community achievements bar.

Radically easy to access on brand approved content for distribution and omnichannel performant delivery. AEM Assets Content Hub and Dynamic Media with OpenAPI capabilities is now GA.

Resource Resolver is returning no resource sometimes


Level 2

we have resource resolver and that is getting resource from JCR using service user mapper(have created one service user with read  access to resource).

Problem is sometimes the resource resolver gives null results for fetching resource from jcr even if we have resource at the location and even access also exit...

this is happening in local and all other environments...  this happens frequently...sometimes it picks the resource.

here is a code.

try (final ResourceResolver resolver = ContentFragmentUtils.getResourceResolver(this.resourceResolverFactory,
TotalRewardsConstants.USER_FOR_SERVICE)) {
final Resource resourceMasterCf = resolver.getResource(path);  --> here path is referring to the CF path in jcr.


resolver.getResource(path);  --> here im having null even if we have resolver object.

5 Replies


Community Advisor

@Sudarshan1992  I think it's better to create resource resolver object using ResourceResolverFactory than using ContentFragmentUtils. 




    private ResourceResolverFactory resourceResolverFactory;



final Map<String, Object> authInfo = Collections.singletonMap(ResourceResolverFactory.SUBSERVICE,



        // Get the auto-closing Service resource resolver

        // Remember, any ResourceResolver you get, you must ensure is closed!

        try (ResourceResolver serviceResolver = resourceResolverFactory.getServiceResourceResolver(authInfo)) {

              //Write all your logic here

            Resource resourceMasterCf = resolver.getResource(path); 

        } catch (LoginException e) {

            log.error("Login Exception when obtaining a User for the Bundle Service: {} ", e);



Level 2

ContentFragmentUtils  is just a utils class for generic methods.
even we are using resolverFactory to get resource resolver.


Community Advisor

Hi @Sudarshan1992 Ideally this should not happen. Tried multiple times, but always getting the resource.


Try adding more logs in your code and then track the path whenever the resource is null.

logger.error("Resource is null for the path {}", path);


IMO, this could mainly happen, when the asset is also getting created using the same service. If that is the case, you might need to change the logic to read the asset (Content Fragment) via some scheduled sling jobs or workflow or any other mode.


Hope this helps!



Level 2

we are not creating asset using same service.
Logs also we dont see any issue.


Level 6


This can happen when the service user (in this case service user associated with sub service TotalRewardsConstants.USER_FOR_SERVICE) used for getting resource resolver does not have access to the resource being accessed. So I would suggest you to check the access of the service user for problematic CFs.