Expand my Community achievements bar.

Learn about Edge Delivery Services in upcoming GEM session

Session being closed before access content with query builder on Publish environment

Avatar

Level 3

Hi,

I have a WCMUsePojo class that uses query builder. To create a session I am doing this.

ResourceResolver  resolver = getResourceResolver();

    Session session = resolver.adaptTo(Session.class);

Query query = builder.createQuery(PredicateGroup.create(map), session);

This works fine on author, but returns an http error 500 on publish environment.

I was looking on the internet that I should do this with SlingRepository, is that right?

I have this code below, and I am not sure what this sling var is.

SlingRepository repos = sling.getService(SlingRepository.class);

The log gives me the error below.

26.02.2018 20:33:34.749 *ERROR* [0:0:0:0:0:0:0:1 [1519673614703] GET /content/latam-portal-agencias/es_cl/contingencias.html HTTP/1.1] org.apache.sling.engine.impl.DefaultErrorHandler Error handler failed:java.io.IOException

java.io.IOException: Error handler failed: org.apache.sling.api.SlingException

    at org.apache.sling.servlets.resolver.internal.SlingServletResolver.handleError(SlingServletResolver.java:765)

    at org.apache.sling.servlets.resolver.internal.SlingServletResolver.handleError(SlingServletResolver.java:492)

    at org.apache.sling.engine.impl.DefaultErrorHandler.handleError(DefaultErrorHandler.java:133)

    at org.apache.sling.engine.impl.SlingRequestProcessorImpl$2.render(SlingRequestProcessorImpl.java:377)

    at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:77)

    at org.apache.sling.rewriter.impl.RewriterFilter.doFilter(RewriterFilter.java:83)

    at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

    at org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:138)

    at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

    at org.apache.sling.engine.impl.SlingRequestProcessorImpl.handleError(SlingRequestProcessorImpl.java:384)

    at org.apache.sling.engine.impl.SlingRequestProcessorImpl.doProcessRequest(SlingRequestProcessorImpl.java:186)

    at org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:219)

    at org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:85)

    at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:79)

    at com.adobe.granite.license.impl.LicenseCheckFilter.doFilter(LicenseCheckFilter.java:308)

    at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)

    at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)

    at org.apache.felix.http.sslfilter.internal.SslFilter.doFilter(SslFilter.java:96)

    at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)

    at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)

    at org.apache.sling.security.impl.ReferrerFilter.doFilter(ReferrerFilter.java:295)

    at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)

    at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)

    at org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:138)

    at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)

    at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)

    at org.apache.sling.featureflags.impl.FeatureManager.doFilter(FeatureManager.java:116)

    at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)

    at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)

    at org.apache.sling.engine.impl.log.RequestLoggerFilter.doFilter(RequestLoggerFilter.java:72)

    at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)

    at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)

    at org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:128)

    at org.apache.felix.http.base.internal.dispatch.DispatcherServlet.service(DispatcherServlet.java:49)

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)

    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)

    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)

    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)

    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)

    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)

    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)

    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)

    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)

    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)

    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)

    at org.eclipse.jetty.server.Server.handle(Server.java:499)

    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)

    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)

    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)

    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)

    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)

    at java.lang.Thread.run(Unknown Source)

Caused by: org.apache.sling.api.SlingException: Cannot get DefaultSlingScript: This session has been closed

    at org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:510)

    at org.apache.sling.servlets.resolver.internal.SlingServletResolver.handleError(SlingServletResolver.java:756)

    ... 51 common frames omitted

Caused by: java.lang.IllegalStateException: This session has been closed

    at com.google.common.base.Preconditions.checkState(Preconditions.java:150)

    at org.apache.jackrabbit.oak.core.ContentSessionImpl.checkLive(ContentSessionImpl.java:85)

    at org.apache.jackrabbit.oak.core.MutableRoot.checkLive(MutableRoot.java:174)

    at org.apache.jackrabbit.oak.core.MutableTree.beforeRead(MutableTree.java:333)

    at org.apache.jackrabbit.oak.core.MutableTree.getPath(MutableTree.java:108)

    at org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.toString(AbstractTree.java:158)

    at org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.toString(AbstractTree.java:153)

    at java.lang.String.valueOf(Unknown Source)

    at java.lang.StringBuilder.append(Unknown Source)

    at com.google.common.base.Objects$ToStringHelper.toString(Objects.java:398)

    at org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate.toString(NodeDelegate.java:877)

    at java.lang.String.valueOf(Unknown Source)

    at java.lang.StringBuilder.append(Unknown Source)

    at org.apache.jackrabbit.oak.jcr.session.ItemImpl.toString(ItemImpl.java:312)

    at org.apache.jackrabbit.oak.jcr.session.NodeImpl.toString(NodeImpl.java:106)

    at org.apache.sling.jcr.resource.internal.helper.jcr.JcrItemResourceFactory.getSubitem(JcrItemResourceFactory.java:151)

    at org.apache.sling.jcr.resource.internal.helper.jcr.JcrItemResourceFactory.createResource(JcrItemResourceFactory.java:94)

    at org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider.getResource(JcrResourceProvider.java:300)

    at org.apache.sling.resourceresolver.impl.providers.stateful.AuthenticatedResourceProvider.getResource(AuthenticatedResourceProvider.java:135)

    at org.apache.sling.resourceresolver.impl.helper.ResourceResolverControl.getResource(ResourceResolverControl.java:223)

    at org.apache.sling.resourceresolver.impl.ResourceResolverImpl.getAbsoluteResourceInternal(ResourceResolverImpl.java:1045)

    at org.apache.sling.resourceresolver.impl.ResourceResolverImpl.getResourceInternal(ResourceResolverImpl.java:671)

    at org.apache.sling.resourceresolver.impl.ResourceResolverImpl.getResource(ResourceResolverImpl.java:642)

    at com.day.cq.wcm.core.impl.PageImpl.getContentResource(PageImpl.java:130)

    at com.day.cq.wcm.scripting.impl.WCMBindingsValuesProvider.addBindings(WCMBindingsValuesProvider.java:181)

    at org.apache.sling.scripting.core.impl.DefaultSlingScript.verifySlingBindings(DefaultSlingScript.java:735)

    at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:200)

    at org.apache.sling.scripting.core.impl.DefaultSlingScript.eval(DefaultSlingScript.java:184)

    at org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:491)

    ... 52 common frames omitted

1 Reply

Avatar

Level 2

In WCMUsePojo class you can use

SlingRepository repos =getSlingScriptHelper().getService(SlingRepository.class);

to access SlingRepository API.

You can increase the search speed by creating custom indexes. Also please check other classes in the bundle whether you are properly closing resourceResolver which you instantiated  (In WCMUsePojo class you don't need to instantiate getResourceResolver( )   ).