0

在 Struts2 中

  • 动作是线程安全的,每个请求都会启动一个单独的动作类对象。
  • 拦截器不是线程安全的,因为仅针对所有请求启动对象。他们在其 execute() 方法中接收 ActionInvocation 对象,并且可以使用该对象访问操作上下文。请参阅“ Struts2 线程中的拦截器是否不安全?

牢记这些事情,我相信

  • 结果不是线程安全的,因为它们在其 execute() 方法中接收 ActionInvocation 对象。

在创建自定义结果类时,我在“Manning Struts2 in Action”一书中找到了以下代码行。

ServletActionContext.getResponse()

我很困惑为什么作者没有使用 actionInvocation 对象得到响应,即

actionInvocation.getInvocationContext().get(StrutsStatics.HTTP_RESPONSE);

现在我有以下问题。

  • 结果线程安全吗?
  • 如果 Result 不是线程安全的并且有两个不同的请求,那么 ServletActionContext 如何返回相关响应?
4

1 回答 1

3

上下文使用ThreadLocals。

结果显然是按请求实例化的——看一些简单的东西,比如StreamResult:它使用实例变量来处理诸如此类的事情contentType

于 2012-05-02T13:01:00.107 回答