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* [ Apache Sling Resource Resolver Finalizer Thread] org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl Risorsa non chiusa 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.CommonResourceResolverFactoryImpl.getResourceResolver(CommonResourceResolverFactoryImpl.java:173)



at 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)



at com.day.cq.search.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(QueryBuilderJsonServlet.java:165)



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



in com.day.cq.search.impl.servlets.QueryBuilderJsonServlet.doGet(QueryBuilderJsonServlet.java:73){24 org.apache.sling.api.servlets.SlingSafeMethodsServlet.mayService(SlingSafeMethodsServlet.java:270)



all’indirizzo org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingAllMethodsServlet.java:140)



all’indirizzo org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.9}{java}) org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:378)



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



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





:346

Risoluzione resolution

Sui siti AEM live, è consigliabile 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
experience-cloud-kcs-help-kbarticles