在Tomcat 6中拦截对HttpSession的调用

时间:2010-10-04 23:52:38

标签: java spring-mvc aop tomcat6

拦截session.getAttribute()和session.setAttribute()的推荐方法是什么?这是基于Spring的应用程序,所以基于AOP的东西会很棒。我想避免在可能的情况下覆盖核心Tomcat类。

更新:我想将实际的序列化属性存储在Web服务中。

2 个答案:

答案 0 :(得分:5)

我不熟悉AOP或Spring(或Tomcat)。 :)但我很熟悉Java

我这样做的方法是设置一个过滤器,并用我自己的对象替换请求变量

request = new MyRequest(request);

然后重写getSession()和getSession(boolean)以返回MySession的实例

javax.servlet.HttpServletRequest和javax.servlet.HttpSession类是Java EE标准,而不是特定于Tomcat。

答案 1 :(得分:5)

您可以实现自己的会话org.apache.catalina.Managerswap it into Tomcat's configuration,虽然界面看起来相当冗长 - 所以可能首先考虑扩展ManagerBase或StandardManager。

作为替代方案,注册HttpSessionAttributeListener以在添加/删除/更新会话属性时收到通知。这不会改变默认的存储机制 - 会话数据仍将保留在内存中 - 但它也可以让你用另一种机制来保存数据。