[ 
https://issues.apache.org/jira/browse/SLING-7152?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16188115#comment-16188115
 ] 

Antonio Sanso commented on SLING-7152:
--------------------------------------

{code}
Index: 
src/main/java/org/apache/sling/extensions/webconsolesecurityprovider/internal/AbstractWebConsoleSecurityProvider.java
===================================================================
--- 
src/main/java/org/apache/sling/extensions/webconsolesecurityprovider/internal/AbstractWebConsoleSecurityProvider.java
       (revision 1810355)
+++ 
src/main/java/org/apache/sling/extensions/webconsolesecurityprovider/internal/AbstractWebConsoleSecurityProvider.java
       (working copy)
@@ -23,8 +23,12 @@
 import java.util.Dictionary;
 import java.util.HashSet;
 import java.util.Set;
-
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletRequestEvent;
+import javax.servlet.ServletRequestListener;
 import org.apache.felix.webconsole.WebConsoleSecurityProvider;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.auth.core.AuthenticationSupport;
 import org.osgi.service.cm.ConfigurationException;
 import org.osgi.service.cm.ManagedService;
 import org.slf4j.Logger;
@@ -35,7 +39,7 @@
  * It handles the configuration of the service.
  */
 public abstract class AbstractWebConsoleSecurityProvider
-    implements WebConsoleSecurityProvider, ManagedService {
+    implements WebConsoleSecurityProvider, ManagedService, 
ServletRequestListener {
 
     // name of the property providing list of authorized users
     private static final String PROP_USERS = "users";
@@ -86,4 +90,19 @@
         }
         return groups;
     }
+
+    @Override
+    public void requestDestroyed(ServletRequestEvent sre) {
+        ServletRequest request = sre.getServletRequest();
+        Object resolverAttr = 
request.getAttribute(AuthenticationSupport.REQUEST_ATTRIBUTE_RESOLVER);
+        if (resolverAttr instanceof ResourceResolver) {
+            ((ResourceResolver) resolverAttr).close();
+            
request.removeAttribute(AuthenticationSupport.REQUEST_ATTRIBUTE_RESOLVER);
+        }
+    }
+
+    @Override
+    public void requestInitialized(ServletRequestEvent sre) {
+        //nothing to do
+    }
 }
Index: 
src/main/java/org/apache/sling/extensions/webconsolesecurityprovider/internal/ServicesListener.java
===================================================================
--- 
src/main/java/org/apache/sling/extensions/webconsolesecurityprovider/internal/ServicesListener.java
 (revision 1810355)
+++ 
src/main/java/org/apache/sling/extensions/webconsolesecurityprovider/internal/ServicesListener.java
 (working copy)
@@ -22,7 +22,7 @@
 import java.util.Dictionary;
 import java.util.Hashtable;
 import java.util.concurrent.atomic.AtomicBoolean;
-
+import javax.servlet.ServletRequestListener;
 import org.apache.felix.webconsole.WebConsoleSecurityProvider;
 import org.apache.sling.launchpad.api.StartupListener;
 import org.apache.sling.launchpad.api.StartupMode;
@@ -171,7 +171,7 @@
         props.put(Constants.SERVICE_DESCRIPTION, "Apache Sling Web Console 
Security Provider 2");
         props.put(Constants.SERVICE_VENDOR, "The Apache Software Foundation");
         this.provider2Reg = this.bundleContext.registerService(
-            new String[] {ManagedService.class.getName(), 
WebConsoleSecurityProvider.class.getName()},
+            new String[] {ManagedService.class.getName(), 
WebConsoleSecurityProvider.class.getName(), 
ServletRequestListener.class.getName()},
                           new SlingWebConsoleSecurityProvider2(authSupport, 
authenticator), props);
         this.registrationState = State.PROVIDER2;
     }
@@ -182,7 +182,7 @@
         props.put(Constants.SERVICE_DESCRIPTION, "Apache Sling Web Console 
Security Provider");
         props.put(Constants.SERVICE_VENDOR, "The Apache Software Foundation");
         this.providerReg = this.bundleContext.registerService(
-            new String[] {ManagedService.class.getName(), 
WebConsoleSecurityProvider.class.getName()}, new 
SlingWebConsoleSecurityProvider(repository), props);
+            new String[] {ManagedService.class.getName(), 
WebConsoleSecurityProvider.class.getName(), 
ServletRequestListener.class.getName()}, new 
SlingWebConsoleSecurityProvider(repository), props);
         this.registrationState = State.PROVIDER;
     }
{code}

attaching path. [~cziegeler] WDYT?

> Unclosed ResourceResolver in 
> org.apache.sling.extensions.webconsolesecurityprovider.internal.SlingWebConsoleSecurityProvider2
> -----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: SLING-7152
>                 URL: https://issues.apache.org/jira/browse/SLING-7152
>             Project: Sling
>          Issue Type: Bug
>          Components: Extensions
>            Reporter: Antonio Sanso
>            Assignee: Antonio Sanso
>            Priority: Minor
>
> The SlingWebConsoleSecurityProvider it is handling the authentication but it 
> is not registering a servlet request listener to close the session at the end 
> of the request. 
> {noformat}
> 15.09.2017 18:07:59.044 *INFO* [Apache Sling Resource Resolver Finalizer 
> Thread] 
> org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl 
> Unclosed ResourceResolver was created here:
> 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 
> org.apache.sling.auth.core.impl.SlingAuthenticator.getResolver(SlingAuthenticator.java:791)
> at 
> org.apache.sling.auth.core.impl.SlingAuthenticator.doHandleSecurity(SlingAuthenticator.java:506)
> at 
> org.apache.sling.auth.core.impl.SlingAuthenticator.handleSecurity(SlingAuthenticator.java:460)
> at 
> org.apache.sling.extensions.webconsolesecurityprovider.internal.SlingWebConsoleSecurityProvider2.authenticate(SlingWebConsoleSecurityProvider2.java:69)
> at 
> org.apache.felix.webconsole.internal.servlet.OsgiManagerHttpContext.handleSecurity(OsgiManagerHttpContext.java:103)
> at 
> org.apache.felix.http.base.internal.service.ServletContextImpl.handleSecurity(ServletContextImpl.java:421)
> at 
> org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:57)
> 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(Thread.java:745)
> {noformat}
> We should add this.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to