当他们说的行动控制器的支柱框架是多线程的,这是否意味着,有多个实例servlet采取的请求,并转发给模型。或者这是否意味着有一个单一的实例,考虑所有的要求?任何视觉效果将可以理解的

有帮助吗?

解决方案

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

其他提示

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

支柱控制器servlet创建了唯一的一个实例类行动,并使用这一实例中服务的所有请求。因此,需要编写线安全的行动类别。按照同样的准则将用于编写线安全的Servlet.这里有两个一般准则,这将有助于你编写可扩展线安全的行动类:

  • 只使用本地的变量 -最重要的原则,艾滋病在线安全的编码是只使用本地的变量, 不实例变量, 在你的动作类。当地变量上创建一堆的分配(通过JVM)每一项请求线,因此没有必要担心分享他们。一个动作可以考虑的因素有几个地方的方法,只要所有的变量所需要的是通过作方法的参数。这保证线的安全,因为JVM处理这样的变量在内部使用的呼堆这是与一个单一的线。

  • 节省资源 -作为一般规则,分配稀缺资源并保持它们跨越请求的相同的用户(用户的会议)可能会导致可扩展性问题。例如,如果应用程序使用JDBC和你分配一个单独的JDBC连接每一个用户,你可能会运行在一定的可扩展性问题时,你的网站突然出现在Slashdot.你应该努力使用泳池和释放资源(例如数据库连接)之前转发的控制,以适当的视成分--即使一个豆方法你必须抛出所谓的一个例外。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top