I am not sure it is some kind of "issue". May be I do not understand smth. It
looks like on secure bean call it tries to get SecurityManager but cannot
find one because I did not inited one (but should I create one?)

If I create one as mentioned in Quickstart llike this
DefaultSecurityManager securityManager = new DefaultSecurityManager();
SecurityUtils.setSecurityManager( securityManager );
Subject subject = new
Subject.Builder().sessionId(user.getSessionId()).buildSubject();
ThreadState threadState = new SubjectThreadState(subject);
threadState.bind();
try {
    SampleManager sampleManager = (SampleManager)
ctx.getBean("sampleManager");
    //sampleManager.secureMethod1();
} finally {
   threadState.clear();
}

I get this exception 
org.apache.shiro.session.UnknownSessionException: There is no session with
id [f493926d-b5dc-4488-945e-1aa97145dc7a]
        at
org.apache.shiro.session.mgt.eis.CachingSessionDAO.readSession(CachingSessionDAO.java:281)
        at
org.apache.shiro.session.mgt.DefaultSessionManager.retrieveSessionFromDataSource(DefaultSessionManager.java:202)
       .....
        at
org.apache.shiro.subject.Subject$Builder.buildSubject(Subject.java:703)
        at com.springbook.client.RemotingTest.test(RemotingTest.java:67)
        at com.springbook.client.RemotingTest.main(RemotingTest.java:36)

Should be SecurityManager inited automatically on Subject creation i.e.
Subject subject = new
Subject.Builder().sessionId(user.getSessionId()).buildSubject();

?


Les Hazlewood-2 wrote:
> 
> Hi Narcom,
> 
> Can you please re-post this along with the full stack trace (not just
> the SecurityUtils.getSecurityManager line) in a Jira issue?  That way
> It won't get lost.
> 
> - Les
> 
> On Thu, Oct 29, 2009 at 3:48 AM, Narcom <[email protected]> wrote:
>>
>> I noticed that java web start GUI application does not start for “Apache
>> Shiro :: Samples :: Spring”.
>>
>> I use stand alone java program to access tomcat. Here its code
>>
>> PropertyConfigurator.configure("web/WEB-INF/log.properties");
>> ctx = new
>> FileSystemXmlApplicationContext("/web/WEB-INF/remoting-client.xml");
>> LoginManagerRemote loginManager = (LoginManagerRemote)
>> ctx.getBean("loginManager");
>> UserRemote user = loginManager.login();
>> log.info("user name: " + user.getName());
>> log.info("sesssionId: " + user.getSessionId());
>>
>> SampleManager sampleManager = (SampleManager)
>> ctx.getBean("sampleManager");
>> sampleManager.secureMethod1();
>>
>> So I write 2 spring remote beans
>> first makes login and return jsessionId.
>> <bean name="/login"
>> class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
>>    <property name="service" ref="loginManager"/>
>>    <property name="serviceInterface"
>> value="com.springbook.LoginManagerRemote"/>
>> </bean>
>>
>> second is secure bean
>>
>> <bean name="/sampleManager"
>> class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
>>        <property name="service" ref="sampleManager"/>
>>        <property name="serviceInterface"
>> value="my.samples.shiro.spring.SampleManager"/>
>>        <property name="remoteInvocationExecutor"
>> ref="secureRemoteInvocationExecutor"/>
>>    </bean>
>>
>> What should I do to call secure bean from my standalone client?
>>
>> If I just call it after login I get
>>
>> Exception in thread "main" java.lang.IllegalStateException: No
>> SecurityManager accessible to the calling code, either bound to the
>> org.apache.shiro.util.ThreadContext or as a vm static singleton.  This is
>> an
>> invalid application configuration.
>>        at
>> org.apache.shiro.SecurityUtils.getSecurityManager(SecurityUtils.java:115)
>>
>> --
>> View this message in context:
>> http://n2.nabble.com/Spring-stand-alone-client-tp3910311p3910311.html
>> Sent from the Shiro User mailing list archive at Nabble.com.
>>
> 
> 

-- 
View this message in context: 
http://n2.nabble.com/Spring-stand-alone-client-tp3910311p3914503.html
Sent from the Shiro User mailing list archive at Nabble.com.

Reply via email to