Take a look at this example: https://github.com/cilogi/gaeshiro
Can you post a reproduce case for this ideally in jira: https://issues.apache.org/jira/browse/SHIRO On Fri, Aug 15, 2014 at 3:54 PM, highroller <[email protected]> wrote: > Hi, > I am using Google App Engine, and I am using using Shiro in my Google App > Engine endpoint. Every time it runs to "Session originalSession = > subject.getSession();", it throws the following exception. It seems that > App Engine doesn't like app spawning new thread for security reason. Is > there reason why Shiro has to spawn new thread when creating new session? > Is there anyway to solve or go around this problem? Thanks. > > Aug 15, 2014 12:48:18 PM com.google.api.server.spi.SystemService > invokeServiceMethod > SEVERE: access denied ("java.lang.RuntimePermission" "modifyThreadGroup") > java.security.AccessControlException: access denied > ("java.lang.RuntimePermission" "modifyThreadGroup") > at > > java.security.AccessControlContext.checkPermission(AccessControlContext.java:457) > at > java.security.AccessController.checkPermission(AccessController.java:884) > at > java.lang.SecurityManager.checkPermission(SecurityManager.java:549) > at > > com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:429) > at > > com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkAccess(DevAppServerFactory.java:454) > at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:315) > at java.lang.Thread.init(Thread.java:391) > at java.lang.Thread.init(Thread.java:349) > at java.lang.Thread.<init>(Thread.java:461) > at > > org.apache.shiro.session.mgt.ExecutorServiceSessionValidationScheduler$1.newThread(ExecutorServiceSessionValidationScheduler.java:87) > at > > java.util.concurrent.ThreadPoolExecutor$Worker.<init>(ThreadPoolExecutor.java:612) > at > > java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:925) > at > > java.util.concurrent.ThreadPoolExecutor.ensurePrestart(ThreadPoolExecutor.java:1587) > at > > java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(ScheduledThreadPoolExecutor.java:334) > at > > java.util.concurrent.ScheduledThreadPoolExecutor.scheduleAtFixedRate(ScheduledThreadPoolExecutor.java:573) > at > > java.util.concurrent.Executors$DelegatedScheduledExecutorService.scheduleAtFixedRate(Executors.java:735) > at > > org.apache.shiro.session.mgt.ExecutorServiceSessionValidationScheduler.enableSessionValidation(ExecutorServiceSessionValidationScheduler.java:92) > at > > org.apache.shiro.session.mgt.AbstractValidatingSessionManager.enableSessionValidation(AbstractValidatingSessionManager.java:232) > at > > org.apache.shiro.session.mgt.AbstractValidatingSessionManager.enableSessionValidationIfNecessary(AbstractValidatingSessionManager.java:86) > at > > org.apache.shiro.session.mgt.AbstractValidatingSessionManager.createSession(AbstractValidatingSessionManager.java:135) > at > > org.apache.shiro.session.mgt.AbstractNativeSessionManager.start(AbstractNativeSessionManager.java:59) > at > > org.apache.shiro.mgt.SessionsSecurityManager.start(SessionsSecurityManager.java:121) > at > > org.apache.shiro.subject.support.DelegatingSubject.getSession(DelegatingSubject.java:336) > at > > org.apache.shiro.subject.support.DelegatingSubject.getSession(DelegatingSubject.java:312) > at > > com.example.my.broadcast.backend.engine.user.UserEndpoint.login(UserEndpoint.java:91) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:483) > at > > com.google.api.server.spi.SystemService.invokeServiceMethod(SystemService.java:359) > at > > com.google.api.server.spi.SystemServiceServlet.execute(SystemServiceServlet.java:160) > at > > com.google.api.server.spi.SystemServiceServlet.doPost(SystemServiceServlet.java:118) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) > at > > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) > at > > com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74) > at > > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > > com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:127) > at > > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > > com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34) > at > > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > > com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63) > at > > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > > com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) > at > > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > > com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125) > at > > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > > com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366) > at > > com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349) > at > > com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116) > at > > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) > at > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) > at > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) > at > org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) > at > > com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:98) > at > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at > > com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:490) > at > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at org.mortbay.jetty.Server.handle(Server.java:326) > at > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) > at > > org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) > at > > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) > at > > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) > > > > > -- > View this message in context: > http://shiro-user.582556.n2.nabble.com/Google-App-Engine-doesn-t-like-Shiro-Session-Creating-New-Thread-tp7580155.html > Sent from the Shiro User mailing list archive at Nabble.com. >
