Hi Andy, I had to move the issue to Shiro's issue space (Ki is now defunct):
https://issues.apache.org/jira/browse/SHIRO-85 Regards, Les On Thu, Aug 20, 2009 at 2:30 PM, Les Hazlewood<[email protected]> wrote: > Thanks! > > On Thu, Aug 20, 2009 at 2:02 PM, Andy Tripp<[email protected]> wrote: >> Jira issue created: >> https://issues.apache.org/jira/browse/KI-82 >> >>> -----Original Message----- >>> From: [email protected] [mailto:[email protected]] On >>> Behalf Of Les Hazlewood >>> Sent: Thursday, August 20, 2009 11:53 AM >>> To: [email protected] >>> Subject: Re: need more help with SSO >>> >>> Hi Andy, >>> >>> Can you please make note of this in a Jira issue? I'll fix it right >>> away, but I'd like a record of this so when I modify the code, I can >>> comment exactly why the change is required to ensure someone in the >>> future doesn't accidentally revert the change. >>> >>> Thanks! >>> >>> Les >>> >>> On Thu, Aug 20, 2009 at 11:27 AM, Andy Tripp<[email protected]> >>> wrote: >>> > Les, >>> > >>> > I finally found the problem. This line... >>> > securityManager.sessionDAO = $sessionDAO >>> > ...was being processed BEFORE this line... >>> > securityManager.sessionManager = $sessionManager >>> > >>> > In ReflectionBuilder.buildObjects(), instanceMap and propertyMap need to >>> be LinkedHashMap type, not just HashMap. With HashMap, the properties in >>> ShiroFilter are being processed in arbitrary order, rather than the order >>> listed. That would explain why it works for you and not me - you got >>> unlucky :) >>> > >>> > Andy >>> > >>> > >>> >> -----Original Message----- >>> >> From: Andy Tripp [mailto:[email protected]] >>> >> Sent: Wednesday, August 19, 2009 4:02 PM >>> >> To: [email protected] >>> >> Subject: RE: need more help with SSO >>> >> >>> >> Les, >>> >> Sorry, that last email was a mistake on my part. >>> >> >>> >> Les, >>> >> >>> >> What I'm seeing now is that the DefaultWebSecurityManager instance's >>> >> SessionManager is always set to ServletContainerSessionManager, when it >>> >> should be a DefaultWebSessionManager. I tried adding these to my >>> config: >>> >> >>> >> sessionManager = >>> org.apache.shiro.web.session.DefaultWebSessionManager >>> >> securityManager.sessionManager = $sessionManager >>> >> >>> >> ...but still, the DefaultWebSecurityManager.sessionManager field is an >>> >> instance of ServletContainerSessionManager. >>> >> >>> >> I'm stumped. I guess I'm not clear on what SecurityManager instance is >>> >> being called by this config stuff. Perhaps I'm missing some sort of: >>> >> something.securityManager = securityManager >>> >> >>> >> Andy >>> >> p.s. here's my full [main] section of my filter: >>> >> >>> >> realmA = org.apache.shiro.realm.text.PropertiesRealm >>> >> securityManager = org.apache.shiro.web.DefaultWebSecurityManager >>> >> sessionManager = >>> >> org.apache.shiro.web.session.DefaultWebSessionManager >>> >> securityManager.sessionManager = $sessionManager >>> >> >>> >> securityManager.sessionMode = native >>> >> >>> >> cacheManager = org.apache.shiro.cache.DefaultCacheManager >>> >> >>> >> sessionDAO = org.apache.shiro.session.mgt.eis.MemorySessionDAO >>> >> sessionDAO.cacheManager = $cacheManager >>> >> securityManager.sessionDAO = $sessionDAO >>> >> securityManager.cacheManager = $cacheManager >>> >> >>> >> securityManager.realm = $realmA >>> >> >>> >> > -----Original Message----- >>> >> > From: [email protected] [mailto:[email protected]] >>> On >>> >> > Behalf Of Les Hazlewood >>> >> > Sent: Wednesday, August 19, 2009 2:20 PM >>> >> > To: [email protected] >>> >> > Subject: Re: need more help with SSO >>> >> > >>> >> > Hrm - that would be very odd if the DefaultWebSecurityManager was not >>> >> > the instance - that is what the ShiroFilter enables at startup by >>> >> > default. Just in case, try this as your very first config line: >>> >> > >>> >> > securityManager = org.apache.shiro.web.DefaultWebSecurityManager >>> >> > >>> >> > What does your debugger say is the securityManager instance? >>> >> > Something is very strange... >>> >> > >>> >> > Thanks for the extra info. Are there any JUnit tests you might be >>> >> > able to send our way? >>> >> > >>> >> > - Les >>> >> > >>> >> > On Wed, Aug 19, 2009 at 1:56 PM, Andy Tripp<[email protected]> >>> >> > wrote: >>> >> > > Les, >>> >> > > I put tracing code in DefaultWebSecurityManager.setSessionMode(), >>> and >>> >> it >>> >> > appears that this method is not getting called. So the >>> >> > ServletContainerSessionManager is not getting replace by a >>> >> > DefaultWebSessionManager. So it appears that this line in the filter >>> >> > config: >>> >> > > >>> >> > > securityManager.sessionMode = native >>> >> > > >>> >> > > is having no effect (note that it's securityManager, not >>> >> sessionManager >>> >> > as you suggest in the previous response). >>> >> > > >>> >> > > I'll keep trying to track it down further, any pointers would be >>> >> > appreciated. I'm off to try to find the some SecurityManager >>> instance, >>> >> > which I suspect is something other than a DefaultWebSecurityManager, >>> >> which >>> >> > would mean that this config line is failing silently. >>> >> > > >>> >> > > Obviously, all this dependency injection via XML is driving me >>> >> > completely crazy. I may be allergic to server-side Java :) >>> >> > > >>> >> > > Andy >>> >> > > >>> >> > >> -----Original Message----- >>> >> > >> From: [email protected] >>> [mailto:[email protected]] >>> >> On >>> >> > >> Behalf Of Les Hazlewood >>> >> > >> Sent: Wednesday, August 19, 2009 12:46 PM >>> >> > >> To: [email protected] >>> >> > >> Subject: Re: need more help with SSO >>> >> > >> >>> >> > >> Hi Andy, >>> >> > >> >>> >> > >> A quick note about the message: that was a bug in the exception >>> >> > >> message, but the code is working as expected: if the wrapped >>> >> > >> SessionManager does not implement the SessionDAOAware interface, >>> it >>> >> > >> cannot be injected with a SessionDAO. I have since fixed the >>> message >>> >> > >> to be correct and committed this change, although the code logic >>> has >>> >> > >> not been changed. >>> >> > >> >>> >> > >> Also, make sure that you do this: >>> >> > >> >>> >> > >> sessionManager.sessionMode = native >>> >> > >> >>> >> > >> before you try to inject the SessionDAO. The above call will >>> >> > >> automatically substitute the ServletContainerSessionManager for a >>> >> > >> DefaultWebSessionManager implementation on the fly. This latter >>> >> > >> implementation does in fact implement SessionDAOAware and should >>> >> > >> readily accept SessionDAO instances that are passed through the >>> >> > >> securityManager.setSessionDAO(...) call. >>> >> > >> >>> >> > >> In the meantime, I'll try to create a unit test with the >>> ShiroFilter >>> >> > >> to see I can accurately recreate your issue, but I've been >>> strapped >>> >> > >> for time lately - if you could create one (if possible) and post >>> it >>> >> to >>> >> > >> a Jira issue, that would help a lot. >>> >> > >> >>> >> > >> Regards, >>> >> > >> >>> >> > >> Les >>> >> > >> >>> >> > >> On Tue, Aug 18, 2009 at 11:34 AM, Les >>> >> Hazlewood<[email protected]> >>> >> > >> wrote: >>> >> > >> > Hi Andy, >>> >> > >> > >>> >> > >> > Thanks very much for sending this along - it is very helpful. >>> I'll >>> >> > be >>> >> > >> > able to look into this a bit more later tonight. >>> >> > >> > >>> >> > >> > Regards, >>> >> > >> > >>> >> > >> > Les >>> >> > >> > >>> >> > >> > On Tue, Aug 18, 2009 at 11:21 AM, Andy >>> >> Tripp<[email protected]> >>> >> > >> wrote: >>> >> > >> >> Les, >>> >> > >> >> I tracked this problem down through a maze of try/catch blocks, >>> I >>> >> > see >>> >> > >> this exception: >>> >> > >> >> >>> >> > >> >> javax.servlet.ServletException: Unable to load from text >>> >> > configuration. >>> >> > >> e2=org.apache.shiro.config.ConfigurationException: >>> >> > >> org.apache.shiro.config.ConfigurationException: Unable to set >>> >> property >>> >> > >> [sessionDAO] with value [$sessionDAO]. If '$sessionDAO' is a >>> >> reference >>> >> > to >>> >> > >> another (previously defined) object, please prefix it with '$' to >>> >> > indicate >>> >> > >> that the referenced object should be used as the actual value. >>> For >>> >> > >> example, $$sessionDAO >>> >> > >> >> >>> >> > >> >> ...which I tracked down to the >>> ReflectionBuilder.applyProperty() >>> >> > method >>> >> > >> calling BeanUtils.setProperty() and catching an >>> InvocationException. >>> >> > The >>> >> > >> cause of that exception is: >>> >> > >> >> >>> >> > >> >> java.lang.IllegalArgumentException: The underlying session >>> manager >>> >> > is >>> >> > >> null or does not implement the >>> >> > org.apache.shiro.session.mgt.eis.SessionDAO >>> >> > >> >> interface, which is required if the underlying instance is to >>> >> > receive >>> >> > >> the sessionDAO argument. >>> >> > >> >> >>> >> > >> >> >>> >> > >> >> ...which comes from SessionsSecurityManager.setSessionDAO(), >>> which >>> >> > >> checks >>> >> > >> >> to see that the SessionDAO parameter implements >>> SessionDAOAware. >>> >> The >>> >> > >> passed value is actually of class ServletContainerSessionManager, >>> >> which >>> >> > >> does NOT >>> >> > >> >> implement SessionDAOAware. >>> >> > >> >> >>> >> > >> >> So I guess the mystery is why we're getting setSessionDAO() >>> being >>> >> > >> passed a ServletContainerSessionManager, when in fact we have this >>> >> > config >>> >> > >> line: >>> >> > >> >> >>> >> > >> >> sessionDAO = >>> org.apache.shiro.session.mgt.eis.MemorySessionDAO >>> >> > >> >> >>> >> > >> >> Hope this helps, >>> >> > >> >> Andy >>> >> > >> >> >>> >> > >> >> >>> >> > >> >> >>> >> > >> >> >>> >> > >> >>> -----Original Message----- >>> >> > >> >>> From: Andy Tripp [mailto:[email protected]] >>> >> > >> >>> Sent: Tuesday, August 18, 2009 10:04 AM >>> >> > >> >>> To: [email protected] >>> >> > >> >>> Subject: RE: need more help with SSO >>> >> > >> >>> >>> >> > >> >>> Les, >>> >> > >> >>> >>> >> > >> >>> I tried what you have below and still get the same "Unable to >>> >> load >>> >> > >> from >>> >> > >> >>> text configuration" error. I tried it with the latest Shiro. I >>> >> > >> narrowed >>> >> > >> >>> the problem down to this line: >>> >> > >> >>> >>> >> > >> >>> securityManager.sessionDAO = $sessionDAO >>> >> > >> >>> >>> >> > >> >>> I get no errors with that line commented out. >>> >> > >> >>> >>> >> > >> >>> Any ideas? If not, I could put some tracing in the >>> >> > >> OncePerRequestFilter >>> >> > >> >>> class to narrow the problem down further. >>> >> > >> >>> >>> >> > >> >>> Andy >>> >> > >> >>> >>> >> > >> >>> > -----Original Message----- >>> >> > >> >>> > From: [email protected] >>> >> > [mailto:[email protected]] >>> >> > >> On >>> >> > >> >>> > Behalf Of Les Hazlewood >>> >> > >> >>> > Sent: Monday, August 17, 2009 5:11 PM >>> >> > >> >>> > To: [email protected] >>> >> > >> >>> > Subject: Re: need more help with SSO >>> >> > >> >>> > >>> >> > >> >>> > Hi Andy, >>> >> > >> >>> > >>> >> > >> >>> > I just verified that this simple test config works, although >>> >> not >>> >> > in >>> >> > >> a >>> >> > >> >>> > web environment: >>> >> > >> >>> > >>> >> > >> >>> > ---- >>> >> > >> >>> > realmA = org.apache.shiro.realm.text.PropertiesRealm >>> >> > >> >>> > >>> >> > >> >>> > securityManager.sessionMode = native >>> >> > >> >>> > >>> >> > >> >>> > cacheManager = org.apache.shiro.cache.DefaultCacheManager >>> >> > >> >>> > >>> >> > >> >>> > sessionDAO = >>> org.apache.shiro.session.mgt.eis.MemorySessionDAO >>> >> > >> >>> > sessionDAO.cacheManager = $cacheManager >>> >> > >> >>> > securityManager.sessionDAO = $sessionDAO >>> >> > >> >>> > securityManager.cacheManager = $cacheManager >>> >> > >> >>> > >>> >> > >> >>> > securityManager.realm = $realmA >>> >> > >> >>> > ---- >>> >> > >> >>> > >>> >> > >> >>> > Could you please try that out and see if it works in your >>> web >>> >> > >> >>> > environment? If so, can you try substituting the >>> >> > >> DefaultCacheManager >>> >> > >> >>> > implementation (and your realm implementation) with with >>> your >>> >> > >> >>> > implementations and see what happens? >>> >> > >> >>> > >>> >> > >> >>> > - Les >>> >> > >> >>> > >>> >> > >> >>> > On Mon, Aug 17, 2009 at 4:27 PM, Andy >>> >> > Tripp<[email protected]> >>> >> > >> >>> > wrote: >>> >> > >> >>> > > Here's the complete tomcat log file: >>> >> > >> >>> > > >>> >> > >> >>> > > Aug 17, 2009 3:40:13 PM >>> >> > org.apache.catalina.core.StandardContext >>> >> > >> >>> > filterStart >>> >> > >> >>> > > SEVERE: Exception starting filter ShiroFilter >>> >> > >> >>> > > javax.servlet.ServletException: Unable to load from text >>> >> > >> >>> configuration. >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >>> >> > >> >>> >> > >>> >> >>> org.apache.shiro.web.servlet.OncePerRequestFilter.init(OncePerRequestFilte >>> >> > >> >>> > r.java:148) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >>> >> > >> >>> >> > >>> >> >>> org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilt >>> >> > >> >>> > erConfig.java:221) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >>> >> > >> >>> >> > >>> >> >>> org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationF >>> >> > >> >>> > ilterConfig.java:302) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >>> >> > >> >>> >> > >>> >> >>> org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterC >>> >> > >> >>> > onfig.java:78) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >>> >> > >> >>> >> > >>> >> >>> org.apache.catalina.core.StandardContext.filterStart(StandardContext.java: >>> >> > >> >>> > 3635) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >>> >> > >> >>> >> > >>> >> >>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4222) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >>> >> > >> >>> >> > >>> >> >>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java >>> >> > >> >>> > :760) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >>> >> > >> >>> >> > >>> >> >>> org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:927 >>> >> > >> >>> > ) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >>> >> > >> >>> >> > >>> >> >>> org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:8 >>> >> > >> >>> > 90) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > org.apache.catalina.startup.HostConfig.start(HostConfig.java:1150) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >>> >> > >> >>> >> > >>> >> >>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >>> >> > >> >>> >> > >>> >> >>> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupp >>> >> > >> >>> > ort.java:120) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > org.apache.catalina.core.StandardHost.start(StandardHost.java:736) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >> > >>> org.apache.catalina.core.StandardService.start(StandardService.java:448) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >> org.apache.catalina.core.StandardServer.start(StandardServer.java:700) >>> >> > >> >>> > > at >>> >> > >> >>> org.apache.catalina.startup.Catalina.start(Catalina.java:552) >>> >> > >> >>> > > at >>> sun.reflect.NativeMethodAccessorImpl.invoke0(Native >>> >> > >> Method) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >>> >> > >> >>> >> > >>> >> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: >>> >> > >> >>> > 39) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> >> > >> >>> >>> >> > >> >>> >> > >>> >> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIm >>> >> > >> >>> > pl.java:25) >>> >> > >> >>> > > at java.lang.reflect.Method.invoke(Method.java:597) >>> >> > >> >>> > > at >>> >> > >> >>> > >>> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295) >>> >> > >> >>> > > at >>> >> > >> >>> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433) >>> >> > >> >>> > > Aug 17, 2009 3:40:13 PM >>> >> > >> org.apache.catalina.core.ApplicationContext >>> >> > >> >>> log >>> >> > >> >>> > > INFO: org.apache.webapp.balancer.BalancerFilter: init(): >>> >> > >> ruleChain: >>> >> > >> >>> > [org.apache.webapp.balancer.RuleChain: >>> >> > >> >>> > [org.apache.webapp.balancer.rules.URLStringMatchRule: Target >>> >> > string: >>> >> > >> >>> News >>> >> > >> >>> > / Redirect URL: http://www.cnn.com], >>> >> > >> >>> > [org.apache.webapp.balancer.rules.RequestParameterRule: >>> Target >>> >> > param >>> >> > >> >>> name: >>> >> > >> >>> > paramName / Target param value: paramValue / Redirect URL: >>> >> > >> >>> > http://www.yahoo.com], >>> >> > >> >>> > [org.apache.webapp.balancer.rules.AcceptEverythingRule: >>> >> Redirect >>> >> > >> URL: >>> >> > >> >>> > http://jakarta.apache.org]] >>> >> > >> >>> > > Aug 17, 2009 3:40:13 PM >>> >> > >> org.apache.catalina.core.ApplicationContext >>> >> > >> >>> log >>> >> > >> >>> > > INFO: ContextListener: contextInitialized() >>> >> > >> >>> > > Aug 17, 2009 3:40:13 PM >>> >> > >> org.apache.catalina.core.ApplicationContext >>> >> > >> >>> log >>> >> > >> >>> > > INFO: SessionListener: contextInitialized() >>> >> > >> >>> > > Aug 17, 2009 3:40:13 PM >>> >> > >> org.apache.catalina.core.ApplicationContext >>> >> > >> >>> log >>> >> > >> >>> > > INFO: ContextListener: contextInitialized() >>> >> > >> >>> > > Aug 17, 2009 3:40:13 PM >>> >> > >> org.apache.catalina.core.ApplicationContext >>> >> > >> >>> log >>> >> > >> >>> > > INFO: SessionListener: contextInitialized() >>> >> > >> >>> > > Aug 17, 2009 4:25:59 PM >>> >> > >> org.apache.catalina.core.ApplicationContext >>> >> > >> >>> log >>> >> > >> >>> > > INFO: SessionListener: contextDestroyed() >>> >> > >> >>> > > Aug 17, 2009 4:25:59 PM >>> >> > >> org.apache.catalina.core.ApplicationContext >>> >> > >> >>> log >>> >> > >> >>> > > INFO: ContextListener: contextDestroyed() >>> >> > >> >>> > > Aug 17, 2009 4:25:59 PM >>> >> > >> org.apache.catalina.core.ApplicationContext >>> >> > >> >>> log >>> >> > >> >>> > > INFO: SessionListener: contextDestroyed() >>> >> > >> >>> > > Aug 17, 2009 4:25:59 PM >>> >> > >> org.apache.catalina.core.ApplicationContext >>> >> > >> >>> log >>> >> > >> >>> > > INFO: ContextListener: contextDestroyed() >>> >> > >> >>> > > >>> >> > >> >>> > >> -----Original Message----- >>> >> > >> >>> > >> From: Les Hazlewood [mailto:[email protected]] >>> >> > >> >>> > >> Sent: Monday, August 17, 2009 4:24 PM >>> >> > >> >>> > >> To: [email protected] >>> >> > >> >>> > >> Subject: Re: need more help with SSO >>> >> > >> >>> > >> >>> >> > >> >>> > >> Hi Andy, >>> >> > >> >>> > >> >>> >> > >> >>> > >> It goes in the main section, definitely. Is there any >>> more >>> >> to >>> >> > >> the >>> >> > >> >>> > >> exception? I'd like to see the entire stack trace if >>> >> > possible. >>> >> > >> >>> > >> >>> >> > >> >>> > >> - Les >>> >> > >> >>> > >> >>> >> > >> >>> > >> On Mon, Aug 17, 2009 at 3:41 PM, Andy >>> >> > >> Tripp<[email protected]> >>> >> > >> >>> > >> wrote: >>> >> > >> >>> > >> > I created my own Cache and CacheManager: >>> >> > >> >>> > >> > >>> >> > >> >>> > >> > public class VonageDistributedSessionCache implements >>> >> Cache >>> >> > { >>> >> > >> >>> > >> > public VonageDistributedSessionCache(String name) { >>> >> > >> >>> > >> > >>> System.err.println("VonageDistributedSessionCache >>> >> > >> >>> > >> > constructor."); >>> >> > >> >>> > >> > } >>> >> > >> >>> > >> > ... >>> >> > >> >>> > >> > } >>> >> > >> >>> > >> > >>> >> > >> >>> > >> > public class VonageDistributedSessionCacheManager >>> >> implements >>> >> > >> >>> > >> > CacheManager { >>> >> > >> >>> > >> > public Cache getCache(String name) throws >>> >> CacheException >>> >> > { >>> >> > >> >>> > >> > return new VonageDistributedSessionCache(name); >>> >> > >> >>> > >> > } >>> >> > >> >>> > >> > } >>> >> > >> >>> > >> > >>> >> > >> >>> > >> > Then in [main] section of my ShiroFilter in web.xml, I >>> >> have: >>> >> > >> >>> > >> > [main] >>> >> > >> >>> > >> > realmA = >>> >> com.vonage.auth.client.VonageAuthenticationRealm >>> >> > >> >>> > >> > >>> >> > >> >>> > >> > securityManager.sessionMode = native >>> >> > >> >>> > >> > >>> >> > >> >>> > >> > And when I add this: >>> >> > >> >>> > >> > # pull in vonage centralized authentication: >>> >> > >> >>> > >> > cacheManager = >>> >> > >> >>> > >> > >>> >> com.vonage.auth.client.VonageDistributedSessionCacheManager >>> >> > >> >>> > >> > sessionDAO = >>> >> > org.apache.shiro.session.mgt.eis.MemorySessionDAO >>> >> > >> >>> > >> > sessionDAO.cacheManager = $cacheManager >>> >> > >> >>> > >> > securityManager.sessionDAO = $sessionDAO >>> >> > >> >>> > >> > securityManager.cacheManager = $cacheManager >>> >> > >> >>> > >> > >>> >> > >> >>> > >> > ...I get this error: >>> >> > >> >>> > >> > javax.servlet.ServletException: Unable to load from >>> text >>> >> > >> >>> > configuration. >>> >> > >> >>> > >> > >>> >> > >> >>> > >> > So...does this injection go here in the [main] section >>> of >>> >> > >> >>> > ShiroFilter, >>> >> > >> >>> > >> > or somewhere else? >>> >> > >> >>> > >> > >>> >> > >> >>> > >> > Thanks, >>> >> > >> >>> > >> > Andy >>> >> > >> >>> > >> > >>> >> > >> >>> > > >>> >> > >> >> >>> >> > >> > >>> >> > > >>> > >> >
