2011-09-07 50 views
1

我正在为我的基于Web的应用程序使用Spring/Hibernate和Spring-Security。现在我需要在HtppSessionLister的sessionDestroy方法中执行某些数据库查询。用Spring-Security实现HttpSessionLister时出现的问题

web.xml中:

<listener> 
     <listener-class>com.test.TestSessionListner</listener-class> 
</listener> 
<session-config> 
     <session-timeout>1</session-timeout> 
</session-config> 

我的执行,(1分),它调用sessionDestroyed方法,并从的ApplicationContext获取的所需的对象TestFacade会话超时后。

现在我的问题是,每当我使用userFacade调用下面的方法,它不能执行该方法中的代码:

Person person = testFacade.findPersonByUserId(userId); 

无法确定根本原因对于这一点,任何帮助将是高度赞赏..

谢谢。

+0

当你说“它不能执行方法内的代码”时,你是什么意思?是不是从执行中返回的方法?还是返回null? – asgs

+0

@asgs:表示它无法调用该特定的方法,尽管userFacade对象已被初始化。 – Nirmal

+0

那么,SOP打印什么?尝试调试应用程序以查看是否初始化了“userFacade”并进入该方法。另外,检查返回值。 – asgs

回答

0

终于得到了问题....

里面sessionDestroyed我打电话的方法:

Person person = testFacade.findPersonIdByUserId(userId); 

这需要一些更高的权限,然后anonymousUser执行方法,并在其sessionDestroyed清除现有用户并使用anonymousUser权限调用sessionDestroyed方法。

因此,最后我写了一个代码,这是调用一个方法使用管理员写道。