struts 动作控制器 - 多线程?

发布于 2024-07-05 07:34:59 字数 101 浏览 4 评论 0原文

当他们说 struts 框架中的操作控制器是多线程时,是否意味着有多个 servlet 实例接受请求并将其转发到模型。 或者这是否意味着有一个实例接受所有请求? 任何视觉效果将不胜感激

when they say the action controller in the struts framework is multi threaded, does it mean that there are multiple instances of the servlet taking the request and forwarding it to the model. OR does it mean that there is one single instance taking all the requests? Any visuals will be appreciated

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

匿名的好友 2024-07-12 07:34:59

struts 1 不是线程安全的; 但对于strus 2,它是每个请求一个实例。

struts 1 is not thread safe; but as for strus 2, it is one instance per request.

清晰传感 2024-07-12 07:34:59

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

As per most other servlets, a separate thread is created to process each request. You have to implement the SingleThreadedModel interface to get a new instance of the servlet for each request.

深空失忆 2024-07-12 07:34:59

请参阅http://struts.apache.org/1.x/userGuide/building_controller .html

Struts 控制器 servlet 仅创建 Action 类的一个实例,并使用这一实例来为所有请求提供服务。 因此,您需要编写线程安全的 Action 类。 请遵循编写线程安全 Servlet 时所用的相同准则。 以下是两个通用准则,可帮助您编写可扩展、线程安全的 Action 类:

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

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

see http://struts.apache.org/1.x/userGuide/building_controller.html

The Struts controller servlet creates only one instance of your Action class, and uses this one instance to service all requests. Thus, you need to write thread-safe Action classes. Follow the same guidelines you would use to write thread-safe Servlets. Here are two general guidelines that will help you write scalable, thread-safe Action classes:

  • Only Use Local Variables - The most important principle that aids in thread-safe coding is to use only local variables, not instance variables, in your Action class. Local variables are created on a stack that is assigned (by your JVM) to each request thread, so there is no need to worry about sharing them. An Action can be factored into several local methods, so long as all variables needed are passed as method parameters. This assures thread safety, as the JVM handles such variables internally using the call stack which is associated with a single Thread.

  • Conserve Resources - As a general rule, allocating scarce resources and keeping them across requests from the same user (in the user's session) can cause scalability problems. For example, if your application uses JDBC and you allocate a separate JDBC connection for every user, you are probably going to run in some scalability issues when your site suddenly shows up on Slashdot. You should strive to use pools and release resources (such as database connections) prior to forwarding control to the appropriate View component -- even if a bean method you have called throws an exception.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文