2014-10-27 21 views
-1

這是我的bean定義:Spring aop:scoped-proxy會話bean。這不叫滅法

<bean id="securitySession" 
name="securitySession,authorizer,authenticator,logAuditor" 
class="com.ats_connection.webframework.core.security.SecuritySession" 
scope="session" 
destroy-method="logout"> 
<aop:scoped-proxy /> 
</bean>  

但隨着範圍的代理註銷方法不叫。

如果我不使用scoped-proxy destroy-method叫做ok。

<bean id="asecProxy" class="com.ats_connection.webframework.core.security.AsecWSProxy" scope="session" destroy-method="destroy"/> 
+0

正如所料。 Spring只管理單例bean的生命週期,每個其他範圍都留給用戶(原型,請求等)。 – 2014-10-27 06:50:27

回答

0

我找到了一個使用SessionListener的解決方案。在sessionDestroyed方法中:

securitySession = (SecuritySession) session.getAttribute("scopedTarget.securitySession"); 
securitySession.logout();  

請注意關鍵「scopedTarget.securitySession」而不是「securitySession」。

問候大家!