拦截session.getAttribute()和session.setAttribute()的推荐方法是什么?这是基于Spring的应用程序,所以基于AOP的东西会很棒。我想避免在可能的情况下覆盖核心Tomcat类。
更新:我想将实际的序列化属性存储在Web服务中。
答案 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.Manager和swap it into Tomcat's configuration,虽然界面看起来相当冗长 - 所以可能首先考虑扩展ManagerBase或StandardManager。
作为替代方案,注册HttpSessionAttributeListener以在添加/删除/更新会话属性时收到通知。这不会改变默认的存储机制 - 会话数据仍将保留在内存中 - 但它也可以让你用另一种机制来保存数据。