com.day.cq.search.impl.builder.QueryBuilderImpl出現無結尾標籤的ResourceResolver警告

瞭解如何解決com.day.cq.search.impl.builder.QueryBuilderImpl上未關閉的ResourceResolver警告。

說明 description

環境

AEM 6.5

問題/症狀

源自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資源解析器終結器執行緒] org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl未關閉的ResourceResolver建立於此處:



java.lang.Exception:在org.apache.sling.resourceresolver.resolver.impl.impl.CommonCommonResolver開啟Stacktrace



resourceResolverFactoryImpl$ResolverReference。< init> (CommonResourceResolverFactoryImpl.java:521)



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



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



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



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



在org.apache.sling.resourcerver.impl.CommonResourceResolverFactoryImpl.getResourceResolver olver(CommonResourceResolverFactoryImpl.java:173)



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



在com.day.cq.search.impl.builder.QueryBuilderImpl.createResourceResolver(Querver){BuilderImpl.java:2Impl){6在com.day.cq.search.impl.builder.QueryImpl.getResourceResolver(QueryImpl.java:231)



在com.day.cq.search.impl.result.HitImpl.getResource(HitImpl.java:108)



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



在com.day.cq.search.impl.servlets.QueryBuilderJsonServlet.writeHits(QueryBuilderJsonServlet.java:165)



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



在com.day.cq.search.arch get(QueryBuilderJsonServlet.java:73)



在org.apache.sling.api.servlets.SlingSafeMethodsServlet.mayService(SlingSafeMethodsServlet.java:270)



在org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingServlet.java:1140)



在org.aph ache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:346)



在org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:378)



在org.apache.sling.engine.engine.engine.impl.request.request.data.request.data.java:552){18 {在org.apache.sling.engine.impl.filter.SlingComponentFilterChain.render(SlingComponentFilterChain.java:44)

解決方法 resolution

在即時AEM網站上,建議Dispatcher封鎖 /bin/querybuilder URL。

這些URL可在(面向內部網路的)作者執行個體上安全使用,但在已上線的網站上,它有可能開啟系統以揭露資料。

此錯誤的因應措施是避免使用 /bin/querybuilder servlet,而改用 QueryBuilder API

呼叫API之後,在處理查詢結果之後手動關閉 ResourceResolver

請在此尋找範常式式碼例如,下列是程式碼洩漏的資源解析器:


Query query = queryBuilder.createQuery(…,工作階段);
SearchResult = query.getResult();
for (點選點選: result.getHits())) {
/do 某些處理
}

因應措施代碼:



//因應措施:關閉內部資源解析器
Iterator<資源>資源= result.getResources();
if (resources.hasNext()) {
resources.next()。getResourceResolver()。close();
}

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