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
>> > >> >
>> > >
>

Reply via email to