I'm adding shiro to an existing Web application(using spring mvc), but I
always got NullPointerException. 

Here are the error message:

    Servlet.service() for servlet [jsp] in context with path [/haha-web]
threw exception [Filtered request failed.] with root cause
        java.lang.NullPointerException
                at
org.apache.shiro.mgt.SessionsSecurityManager.getSession(SessionsSecurityManager.java:125)
                at
org.apache.shiro.mgt.DefaultSecurityManager.resolveContextSession(DefaultSecurityManager.java:456)
                at
org.apache.shiro.mgt.DefaultSecurityManager.resolveSession(DefaultSecurityManager.java:442)
                at
org.apache.shiro.mgt.DefaultSecurityManager.createSubject(DefaultSecurityManager.java:338)
                at
org.apache.shiro.subject.Subject$Builder.buildSubject(Subject.java:846)
                at
org.apache.shiro.web.subject.WebSubject$Builder.buildWebSubject(WebSubject.java:148)
                at
org.apache.shiro.web.servlet.AbstractShiroFilter.createSubject(AbstractShiroFilter.java:292)
                at
org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:359)
                at
org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
                at
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
                at
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
                at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
                at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
                at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
                at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
                at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
                at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
                at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
                at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
                at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
                at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
                at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
                at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
                at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
                at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
                at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
                at java.lang.Thread.run(Thread.java:745)
        
    org.apache.catalina.core.StandardWrapperValve invoke
    Servlet.service() for servlet [static] in context with path [/haha-web]
threw exception [Filtered request failed.] with root cause
        java.lang.NullPointerException
                at
org.apache.shiro.mgt.SessionsSecurityManager.getSession(SessionsSecurityManager.java:125)
                at
org.apache.shiro.mgt.DefaultSecurityManager.resolveContextSession(DefaultSecurityManager.java:456)
                at
org.apache.shiro.mgt.DefaultSecurityManager.resolveSession(DefaultSecurityManager.java:442)
                at
org.apache.shiro.mgt.DefaultSecurityManager.createSubject(DefaultSecurityManager.java:338)
                at
org.apache.shiro.subject.Subject$Builder.buildSubject(Subject.java:846)
                at
org.apache.shiro.web.subject.WebSubject$Builder.buildWebSubject(WebSubject.java:148)
                at
org.apache.shiro.web.servlet.AbstractShiroFilter.createSubject(AbstractShiroFilter.java:292)
                at
org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:359)
                at
org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
                at
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
                at
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
                at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
                at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
                at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
                at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
                at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
                at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
                at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
                at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
                at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
                at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
                at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
                at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
                at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
                at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
                at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
                at java.lang.Thread.run(Thread.java:745)
        
    org.apache.catalina.core.StandardWrapperValve invoke
    Servlet.service() for servlet [static] in context with path [/haha-web]
threw exception [Filtered request failed.] with root cause
        java.lang.NullPointerException
                at
org.apache.shiro.mgt.SessionsSecurityManager.getSession(SessionsSecurityManager.java:125)
                at
org.apache.shiro.mgt.DefaultSecurityManager.resolveContextSession(DefaultSecurityManager.java:456)
                at
org.apache.shiro.mgt.DefaultSecurityManager.resolveSession(DefaultSecurityManager.java:442)
                at
org.apache.shiro.mgt.DefaultSecurityManager.createSubject(DefaultSecurityManager.java:338)
                at
org.apache.shiro.subject.Subject$Builder.buildSubject(Subject.java:846)
                at
org.apache.shiro.web.subject.WebSubject$Builder.buildWebSubject(WebSubject.java:148)
                at
org.apache.shiro.web.servlet.AbstractShiroFilter.createSubject(AbstractShiroFilter.java:292)
                at
org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:359)
                at
org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
                at
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
                at
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
                at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
                at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
                at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
                at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
                at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
                at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
                at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
                at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
                at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
                at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
                at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
                at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
                at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
                at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
                at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
                at java.lang.Thread.run(Thread.java:745)

I checked the source code of Shiro, seems the sessionManager is Null.

Here are part of my shiro config:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans";
           xmlns:util="http://www.springframework.org/schema/util";
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xsi:schemaLocation="
           http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd";>
    
        <bean id="cacheManager"
class="org.apache.shiro.cache.ehcache.EhCacheManager">
            <property name="cacheManagerConfigFile"
value="classpath:spring/ehcache.xml"/>
        </bean>
        
        <bean id="credentialsMatcher"
class="org.haha.security.credentials.RetryLimitHashedCredentialsMatcher">
                <constructor-arg ref="cacheManager"/>
                <property name="hashAlgorithmName" value="md5"/>
                <property name="hashIterations" value="2"/>
                <property name="storedCredentialsHexEncoded" value="true"/>
        </bean>
        
        <bean id="userRealm" class="org.haha.security.realm.UserRealm">
                <property name="operatorService" ref="operatorService"/>
                <property name="credentialsMatcher" ref="credentialsMatcher"/>
            <property name="cachingEnabled" value="true"/>
            <property name="authenticationCachingEnabled" value="true"/>
            <property name="authenticationCacheName"
value="authenticationCache"/>
            <property name="authorizationCachingEnabled" value="true"/>
            <property name="authorizationCacheName"
value="authorizationCache"/>
        </bean>
        
        <bean id="sessionIdGenerator"
class="org.apache.shiro.session.mgt.eis.JavaUuidSessionIdGenerator"/>
    
        <bean id="sessionIdCookie"
class="org.apache.shiro.web.servlet.SimpleCookie">
            <constructor-arg value="sid"/>
            <property name="httpOnly" value="true"/>
            <property name="maxAge" value="180000"/>
        </bean>
        
        <bean id="sessionDAO"
class="org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO">
            <property name="activeSessionsCacheName"
value="shiro-activeSessionCache"/>
            <property name="sessionIdGenerator" ref="sessionIdGenerator"/>
        </bean>
        
        <bean id="sessionValidationScheduler"
class="org.apache.shiro.session.mgt.quartz.QuartzSessionValidationScheduler">
                <property name="sessionValidationInterval" value="1800000"/>
                <property name="sessionManager" ref="sessionManager"/>
        </bean>
        
        <bean id="sessionManager"
class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
                <property name="globalSessionTimeout" value="1800000"/>
                <property name="deleteInvalidSessions" value="true"/>
                <property name="sessionValidationSchedulerEnabled" 
value="true"/>
                <property name="sessionValidationScheduler"
ref="sessionValidationScheduler"/>
                <property name="sessionDAO" ref="sessionDAO"/>
                <property name="sessionIdCookieEnabled" value="true"/>
                <property name="sessionIdCookie" ref="sessionIdCookie"/>
        </bean>
        
        <bean id="securityManager"
class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
                <property name="realm" ref="userRealm"/>
                <property name="sessionManager" ref="sessionManager"/>
                <property name="cacheManager" ref="cacheManager"/>
        </bean>
        
        <bean
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
                <property name="staticMethod"
value="org.apache.shiro.SecurityUtils.setSecurityManager"/>
                <property name="arguments" ref="securityManager"/>
        </bean>
    
        <bean id="lifecycleBeanPostProcessor"
class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
        
        <bean id="shiroFilter"
class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
                <property name="securityManager" ref="securityManager"/>
                <property name="loginUrl" value="/home"/>
                <property name="successUrl" value="/home"/>
                <property name="unauthorizedUrl" value="/home"/>
                <property name="filterChainDefinitions">
                        <value>
                                /js/** = anon
                                /api-js/** = anon
                                /img/** = anon
                                /css/** = anon
                                /** = authc
                        </value>
                </property>             
        </bean>
               
    </beans>

I'm new to Shiro, and I've tried everything I could in the past 4 days T_T,
hope someone can help me.



--
View this message in context: 
http://shiro-user.582556.n2.nabble.com/NullPointerException-using-Shiro-tp7580049.html
Sent from the Shiro User mailing list archive at Nabble.com.

Reply via email to