4

这是一个简单的场景:

用户从 Web 应用程序的网页触发一些操作。此操作很繁重,需要更多时间。

在服务器端完成操作之前,用户触发器说相同的操作具有一些不同的参数。所以第二个请求的第二个操作也将开始处理。

那么在这种情况下,是否有两个不同的线程,比如第一个处理第一个请求,另一个处理第二个请求?或者它只是一个线程处理请求和第一个操作只是为了执行第二个请求而中断(未完成)?

在这里,我不想避免用​​户多次请求相同的操作。只是想知道它是如何工作的。

这可能是一个愚蠢的问题,但我对此有点困惑。而发生在我身上的事情正在加剧混乱。对我来说,第一个请求的操作似乎没有完成。

它是 Websphere 应用程序服务器,如果有帮助的话。

4

2 回答 2

3

WebSphere Web Container 为所有请求使用一个线程池。

对于任何请求(不管是谁发出的),都会从池中获取一个线程,处理请求,然后线程返回池中。

即使请求一个接一个,也不能保证同一个线程会处理它们。

如果您看到一个请求干扰另一个请求,则很可能是您在代码中执行的操作,而不是由于 WebSphere 的行为方式。

于 2013-01-21T16:22:24.483 回答
3

不,每个请求都独立于其他请求。websphere 中没有线程关联。一种自学的好方法是查看 websphere 日志。当 WebSphere 向其日志文件(例如 SystemOut.log 等)写入一条记录时,该日志包含一个线程 ID。以下是 WebSphere 日志文件中的示例记录:

[12/11/08 13:06:36:830 CST] 0000002e 虚拟主机 I .....

第二个字段是线程 ID,即“0000002e”。因此,您可以通过这种方式关联两个不同线程如何处理两个请求。希望它对你有意义。

于 2013-01-22T07:21:56.970 回答