Avviso ResourceResolver non chiuso in com.day.cq.search.impl.builder.QueryBuilderImpl

Scopri come risolvere l’avviso ResourceResolver non chiuso all’indirizzo com.day.cq.search.impl.builder.QueryBuilderImpl.

Descrizione description

Ambiente

AEM 6.5

Problema/Sintomi

È presente un avviso di sessione non chiusa nei registri provenienti dalla 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 del Finalizzatore del Risolutore risorse Apache Sling] org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl Unclosed ResourceResolver è stato creato qui:



java.lang.Exception: Apertura di Stacktrace



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



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



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



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



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



at org.apache.sling.resourceresolver.impl.CommonResourceResolverImpl.getResourceResolver(CommonResourceResolverFactoryImpl.java:17Resolver)



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



all'indirizzo com.day.cq.search.impl.builder.QueryBuilderImpl.createResourceResolver(QueryBuilderImpl.java:210)



all'indirizzo com.day.cq.search.impl.builder.QueryImpl.getResourceResolver(QueryImpl.java:231)



all'indirizzo com.day.cq.se arch.impl.result.HitImpl.getResource(HitImpl.java:108)



in com.day.cq.search.writer.SimpleHitWriter.writeSimpleJson(SimpleHitWriter.java:54)



in com.day.cq.search.writer.SimpleHitWriter.write(SimpleHitWriter.java:41)



in com.day.cq.search.impl.servlets.QueryBuilderJsonServlet.writeHits(QueryBuilder.JsonServlet java:165)



at com.day.cq.search.impl.servlets.QueryBuilderJsonServlet.handleQuery(QueryBuilderJsonServlet.java:113)



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



at org.apache.sling.api.servlets.SlingSafeMethodsServlet.mayService(SlingSafeSafe odsServlet.java:270)



in org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingAllMethodsServlet.java:140)



in org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:346)



in org.apache.sling.api.servlets.SlingSafeMethods Servlet.service(SlingSafeMethodsServlet.java:378)



at org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:552)



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

Risoluzione resolution

Nei siti AEM attivi, si consiglia che /bin/querybuilder URL siano bloccati da Dispatcher.

Questi URL possono essere utilizzati in modo sicuro nelle istanze di authoring (interne alla rete), ma sui siti live può aprire il sistema alla divulgazione dei dati.

La soluzione alternativa per questo bug consiste nell'evitare di utilizzare il servlet /bin/querybuilder e utilizzare invece l'API QueryBuilder.

Dopo aver chiamato l'API, chiudere manualmente ResourceResolver dopo l'elaborazione del risultato della query.

Il codice di esempio è disponibile qui. Ad esempio, ecco i risolutori delle risorse con perdita di codice:


Query query = queryBuilder.createQuery(…, sessione);
Risultato di ricerca = query.getResult();
per (hit : result.getHits()) {
// esegui alcune elaborazioni
}

Codice soluzione alternativa:



/// soluzione alternativa: chiudere il risolutore risorse interno
Iterator< Risorse> = result.getResources();
if (resources.hasNext()) {
risorse.next().getResourceResolver().close();
}

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f