Thank you for your reply Les. Here is my web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" metadata-complete="true" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/SampleDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/root-context.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> <filter> <filter-name>shiroFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <init-param> <param-name>targetFilterLifecycle</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>shiroFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>controller</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/controller/servlet-context.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet> <description></description> <display-name>ShiroServlet</display-name> <servlet-name>ShiroServlet</servlet-name> <servlet-class>samle.package.shiro.ShiroServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ShiroServlet</servlet-name> <url-pattern>/ShiroServlet</url-pattern> </servlet-mapping> <servlet> <description></description> <display-name>SpringSessionServlet</display-name> <servlet-name>SpringSessionServlet</servlet-name> <servlet-class>samle.package.shiro.SpringSessionServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SpringSessionServlet</servlet-name> <url-pattern>/SpringSessionServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>controller</servlet-name> <url-pattern>/controller/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app> and my root-context.xml is: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <context:component-scan base-package="samle.package"> <context:exclude-filter expression="org.springframework.stereotype.Controller" type="annotation" /> </context:component-scan> <bean id="sampleRealm" class="samle.package.shiro.sampleRealm" /> <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager"> <property name="globalSessionTimeout" value="3000000"/> </bean> <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> <property name="sessionMode" value="native"/> <property name="sessionManager" ref="sessionManager" /> <property name="realm" ref="sampleRealm" /> </bean> <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" /> <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor" /> <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> <property name="securityManager" ref="securityManager" /> </bean> <bean id="secureRemoteInvocationExecutor" class="org.apache.shiro.spring.remoting.SecureRemoteInvocationExecutor"> <property name="securityManager" ref="securityManager" /> </bean> <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager" /> <property name="loginUrl" value="http:/s/login/" /> <property name="successUrl" value="/s/index" /> <property name="unauthorizedUrl" value="/s/unauthorized" /> <property name="filterChainDefinitions"> <value> /index.html = authc </value> </property> </bean> <bean class="samle.package.print.util.PrintHelper" /> <bean id="sampleSession" class="samle.package.session.SampleSession" scope="session"> <aop:scoped-proxy /> </bean> </beans> I have solved my last problem by changing: HttpSession session = request.getSession(); ServletContext sc = session.getServletContext(); WebApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(sc); SampleSession sampleSession = (SampleSession) appContext.getBean("sampleSession"); to: ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(getServletContext()); SampleSession sampleSession = (SampleSession) context.getBean("sampleSession"); It works well with native and http session mode and there is only ony JSESSIONID which is assosiated with request and I have no cookies in response. The problem appears again when I try to combine Shiro session with Spring session bean in the same servlet. Different JSESSIONID in response backs again and the following logs appear: 2012-07-16 12:19:09,739 TRACE [org.apache.shiro.web.servlet.OncePerRequestFilter] - Filter 'ShiroFilter' not yet executed. Executing now. 2012-07-16 12:19:09,745 TRACE [org.apache.shiro.mgt.DefaultSecurityManager] - Context already contains a SecurityManager instance. Returning. 2012-07-16 12:19:09,745 DEBUG [org.apache.shiro.session.mgt.AbstractValidatingSessionManager] - No sessionValidationScheduler set. Attempting to create default instance. 2012-07-16 12:19:09,746 TRACE [org.apache.shiro.session.mgt.AbstractValidatingSessionManager] - Created default SessionValidationScheduler instance of type [org.apache.shiro.session.mgt.ExecutorServiceSessionValidationScheduler]. 2012-07-16 12:19:09,746 INFO [org.apache.shiro.session.mgt.AbstractValidatingSessionManager] - Enabling session validation scheduler... 2012-07-16 12:19:09,747 TRACE [org.apache.shiro.session.mgt.AbstractValidatingSessionManager] - Attempting to retrieve session with key org.apache.shiro.web.session.mgt.WebSessionKey@8b7723e 2012-07-16 12:19:09,747 TRACE [org.apache.shiro.web.servlet.SimpleCookie] - No 'JSESSIONID' cookie value 2012-07-16 12:19:09,747 DEBUG [org.apache.shiro.session.mgt.DefaultSessionManager] - Unable to resolve session ID from SessionKey [org.apache.shiro.web.session.mgt.WebSessionKey@8b7723e]. Returning null to indicate a session could not be found. 2012-07-16 12:19:09,747 TRACE [org.apache.shiro.mgt.DefaultSecurityManager] - No identity (PrincipalCollection) found in the context. Looking for a remembered identity. 2012-07-16 12:19:09,747 TRACE [org.apache.shiro.web.servlet.SimpleCookie] - No 'rememberMe' cookie value 2012-07-16 12:19:09,747 TRACE [org.apache.shiro.mgt.DefaultSecurityManager] - No remembered identity found. Returning original context. 2012-07-16 12:19:09,751 TRACE [org.apache.shiro.subject.support.DelegatingSubject] - attempting to get session; create = false; session is null = true; session has id = false 2012-07-16 12:19:09,751 TRACE [org.apache.shiro.subject.support.DelegatingSubject] - attempting to get session; create = false; session is null = true; session has id = false 2012-07-16 12:19:09,751 TRACE [org.apache.shiro.subject.support.DelegatingSubject] - attempting to get session; create = false; session is null = true; session has id = false 2012-07-16 12:19:09,754 TRACE [org.apache.shiro.subject.support.DelegatingSubject] - attempting to get session; create = false; session is null = true; session has id = false 2012-07-16 12:19:09,754 TRACE [org.apache.shiro.web.servlet.AbstractShiroFilter] - No FilterChain configured for the current request. Using the default. Do you have any ideas? ----- ----------------------- Paweł Piątkowski http://pl.linkedin.com/in/ppiatkowski -- View this message in context: http://shiro-user.582556.n2.nabble.com/Getting-Spring-session-bean-in-servlet-using-WebApplicationContext-tp7577601p7577606.html Sent from the Shiro User mailing list archive at Nabble.com.
