Jakarta ee struts动作控制器-多线程?

Jakarta ee struts动作控制器-多线程?,jakarta-ee,struts,Jakarta Ee,Struts,当他们说struts框架中的动作控制器是多线程的时候,这是否意味着有多个servlet实例接收请求并将其转发给模型。还是说只有一个实例处理所有请求?任何视觉效果都会受到欢迎与大多数其他servlet一样,会创建一个单独的线程来处理每个请求。您必须实现SingleThreadedModel接口,以便为每个请求获取servlet的新实例。请参见 Struts控制器servlet只创建Action类的一个实例,并使用这个实例为所有请求提供服务。因此,您需要编写线程安全的操作类。遵循与编写线程安全ser

当他们说struts框架中的动作控制器是多线程的时候,这是否意味着有多个servlet实例接收请求并将其转发给模型。还是说只有一个实例处理所有请求?任何视觉效果都会受到欢迎

与大多数其他servlet一样,会创建一个单独的线程来处理每个请求。您必须实现
SingleThreadedModel
接口,以便为每个请求获取servlet的新实例。

请参见

Struts控制器servlet只创建Action类的一个实例,并使用这个实例为所有请求提供服务。因此,您需要编写线程安全的操作类。遵循与编写线程安全servlet相同的指导原则。以下是两条通用准则,可帮助您编写可伸缩的线程安全操作类:

  • 仅使用局部变量-帮助线程安全编码的最重要原则是在操作类中仅使用局部变量,而不是实例变量。本地变量是在(JVM)分配给每个请求线程的堆栈上创建的,因此无需担心共享它们。一个动作可以分解成几个局部方法,只要所需的所有变量都作为方法参数传递。这确保了线程安全,因为JVM使用与单个线程关联的调用堆栈在内部处理此类变量

  • 节约资源-一般来说,在同一用户的请求中(在用户会话中)分配稀缺资源并保持这些资源会导致可伸缩性问题。例如,如果您的应用程序使用JDBC,并且为每个用户分配一个单独的JDBC连接,那么当您的站点突然出现在Slashdot上时,您可能会遇到一些可伸缩性问题。在将控制转发到适当的视图组件之前,您应该努力使用池并释放资源(例如数据库连接)——即使您调用的bean方法引发异常


    • 支柱1不是螺纹安全型;但是对于strus2,它是每个请求一个实例