Avertissement ResourceResolver non fermé à l’adresse com.day.cq.search.impl.builder.QueryBuilderImpl

Découvrez comment résoudre l’avertissement ResourceResolver non fermé sur com.day.cq.search.impl.builder.QueryBuilderImpl.

Description description

Environnement

AEM 6.5

Problème/Symptômes

Un avertissement de session non fermée apparaît dans les journaux provenant de la classe QueryBuilderImpl : 11.01.2018 01:03:18.878 *INFO* [ Apache Sling Resource Resolver Finalizer Thread]


11.01.2018 01:03:18.878 *INFO* [ Thread de finalisation du résolveur de ressource Apache Sling] org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl Unclosed ResourceResolver a été créé ici :



java.lang.Exception: Opening Stacktrace



at org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl$ResolverReference.< init> (CommonResourceResolverFactoryImpl.java:521)



at org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl.register(CommonResourceResolverFactoryImpl.java:218)



at org.apache.sling.resourceresolver.impl.ResourceResolverImpl.< init> (ResourceResolverImpl.java:101)



at org.apache.sling.resourceresolver.impl.ResourceResolverImpl.< init> (ResourceResolverImpl.java:94)



at org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl.getResourceResolverInternal(CommonResourceResolverFactoryImpl.java:263)



at org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl.getResourceResolver(CommonResourceResolverFactoryImpl.java:173)



at org.apache.sling.resourceresolver.impl.ResourceResolverFactoryImpl.getResourceResolver(ResourceResolverFactoryImpl.java:105)



at com.day.cq.search.impl.builder.QueryBuilderImpl.createResourceResolver(QueryBuilderImpl.java:210)



at com.day.cq.search.impl.builder.QueryImpl.getResourceResolver(QueryImpl.java:231at com.day.cq.search.impl.result.HitImpl.getResource(HitImpl.java



):108at com.day.cq.search.writer.SimpleHitWriter.writeSimpleJson(SimpleHitWriter.java



):54at com.day.cq.search.writer.SimpleHitWriter.write(SimpleHitWriter.java



at com.day.cq.search.impl.servlets.QueryBuilderJsonServlet.writeHits(QueryBuilderJsonServlet.java:41 com.day.cq.search.impl.servlets.QueryBuilderJsonServlet.handleQuery(QueryBuilderJsonServlet.java



):165at com.day.cq.search.impl.servlets.QueryBuilderJsonServlet.doGet(QueryBuilderJsonServlet.java



at org.apache.sling.api.servlets.SlingSafeMethodsServlet.mayService(SlingSafeMethodsServlet.java:113at org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingAllMethodsServlet.java



):73at org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java



at org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:270at org.apache.sling.engine.impl.request.RequestData.service(RequestData.java



):140at org.apache.sling.engine.impl.filter.SlingComponentFilterChain.render(SlingComponentFilterChain.java



):346



:378



:552



:44

Résolution resolution

Sur les sites AEM actifs, il est recommandé que les URL /bin/querybuilder soient bloquées par le Dispatcher.

Ces URL peuvent être utilisées en toute sécurité sur les instances d’auteur (orientées réseau interne), mais sur les sites en ligne, cela peut ouvrir le système à la divulgation des données.

La solution à ce bogue consiste à éviter d’utiliser le servlet /bin/querybuilder et à utiliser à la place l’API QueryBuilder.

Après avoir appelé l’API , fermez manuellement le ResourceResolver après avoir traité le résultat de la requête.

Retrouvez l’exemple de code ici. Par exemple, voici des résolveurs de ressources avec fuite de code :

Requête = queryBuilder.createQuery(…, session);
Résultat SearchResult = query.getResult();
for (Accès : result.getHits()) {
// do certains traitements
}

Code de solution :

solution
// : fermez le résolveur de ressources interne
Itérateur< Ressource> ressources = result.getResources();
if (resources.hasNext()) {
resources.next().getResourceResolver().close();
}

recommendation-more-help
experience-cloud-kcs-help-kbarticles