SecurityUtils.getSubject() works best when a subject has been placed on the thread (e.g. during a request, executor invocation, or remote method invocation).
If you need a subject during thread execution, and that execution was not triggered as a result of a request, you will need to first build the Subject instance and then bind it to the thread. Read the 'Custom Subject Instances' section here: http://shiro.apache.org/subject.html Use the Subject.Builder to create a subject: Subject subject = new Subject.Builder(shiroSecurityManager).... .buildSubject(); //execute the thread logic: subject.execute( new Callable() { ... //call SecurityUtils.getSubject() anywhere in this call stack, and it will be fine }); HTH, -- Les Hazlewood CTO, Stormpath | http://stormpath.com | 888.391.5282 twitter: @lhazlewood | http://twitter.com/lhazlewood blog: http://leshazlewood.com stormpath blog: http://www.stormpath.com/blog On Fri, May 18, 2012 at 3:53 PM, jason.hue <[email protected]> wrote: > i struggle for the error quite some time already. > > i use init-method via spring's bean for DAO call. > The error missing if remove the spring's init-method or remove the DAO call. > > I have few other spring's bean with init-method but do not encounter the > error UnavailableSecurityManagerException. > I do have LifecycleBeanPostProcessor configured in applicationContext.xml. > If base on the api , > http://shiro.apache.org/static/current/apidocs/org/apache/shiro/spring/LifecycleBeanPostProcessor.html > It warning not to use the init-method with spring's bean. May i know it's > really matter ? > > Basically what i want to achieve is call to DAO after bean initialization > but somehow it give me the error UnavailableSecurityManagerException. > The error due to thread taken by initialization ? And the call to DAO is > another thread ? > > http://shiro-user.582556.n2.nabble.com/file/n7566226/init-method.txt > init-method.txt is the init () method. I try to use > SecurityUtils.getSubject() to get obtain the subject and then tie to the > initialization thread and do a call to DAO but SecurityUtils.getSubject() > return me a null value. I have no idea how to solve the problem. > > It will be much appreciate if some one provide me some advice / suggestion . > Thanks . > > Jason Hue > > > -- > View this message in context: > http://shiro-user.582556.n2.nabble.com/UnavailableSecurityManagerException-for-spring-s-init-method-DAO-call-tp7566226.html > Sent from the Shiro User mailing list archive at Nabble.com.
