【发布时间】:2015-09-08 09:45:49
【问题描述】:
考虑一个将对象放入值堆栈的拦截器,执行一些逻辑然后将其删除:
ActionContext.getContext().getValueStack().set("user", CurrentUser);
doSomeLogic();
ActionContext.getContext().getValueStack().pop();
正如Are Interceptors in Struts2 Thread UNsafe? 中提到的,拦截器是线程安全的,但是当我们在上面的代码中处理值堆栈时,我想知道这是否可以,或者我们应该同步上面的代码部分。
作为第二个问题,是否有更好的方法从值堆栈中删除元素?
【问题讨论】:
-
从值堆栈中删除它的实际点是什么?值堆栈是按请求创建的。它会自行消失。
-
在回顾 struts 框架时,我发现 struts 总是将值放入它自己的值堆栈中,应用程序从中读取。我认为不建议应用程序在其中添加任何其他内容。这就是我删除推送值的原因。
标签: java multithreading struts2 thread-safety struts2-interceptors