Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 拦截会话集属性调用_Java_Tomcat_Jakarta Ee_Web_Replication - Fatal编程技术网

Java 拦截会话集属性调用

Java 拦截会话集属性调用,java,tomcat,jakarta-ee,web,replication,Java,Tomcat,Jakarta Ee,Web,Replication,我们有一个需要在集群中运行的第三方Java web应用程序(我们需要在集群中复制会话),应用程序中的会话属性不可序列化,我们无法访问源代码,它们是否干净,拦截session.set属性调用并在将对象放入会话之前更改对象的非侵入性方法查看HttpSessionaDistributeListener不是一个适合您的解决方案,您可以选择使用ServletFilter。不确定的是,这对您的需求来说太过分了,不过 首先在链中激活此ServletFilter 用您自己的HttpServletRequestW

我们有一个需要在集群中运行的第三方Java web应用程序(我们需要在集群中复制会话),应用程序中的会话属性不可序列化,我们无法访问源代码,它们是否干净,拦截session.set属性调用并在将对象放入会话之前更改对象的非侵入性方法查看
HttpSessionaDistributeListener
不是一个适合您的解决方案,您可以选择使用
ServletFilter
。不确定的是,这对您的需求来说太过分了,不过

  • 首先在链中激活此ServletFilter
  • 用您自己的
    HttpServletRequestWrapper
    实现包装
    HttpServletRequestWrapper
    传递的链,通过返回创建的原始容器的装饰器实现来覆盖
    getSession
  • 装饰器是拦截
    setAttribute
    方法的网关

  • 我脑子里一直在想这个问题,但是我坚持要一个不那么麻烦的解决方案,我会尝试一下,如果我没有得到不同的观点,我会接受这个答案。另外,我在问自己,是否有人(很可能在servlet容器级别)有风险可以在装饰会话之前访问会话,甚至可以缓存原始会话对象。。。希望,尽管可能,但这样做的可能性很小。