这是一个简单的场景:
用户从Web应用程序的网页触发某些操作。这个操作很重,需要一些时间。
在服务器端完成操作之前,用户触发器会使用一些不同的参数说明相同的操作。所以第二个请求的第二个操作也将开始处理。
所以在这种情况下,是否有两个不同的线程,如第一个处理第一个请求而另一个处理第二个请求?或者只是一个线程处理两个请求,第一个操作只是为了执行第二个请求而中断(未完成)?
这里我不想避免用户多次请求相同的操作。只是想知道它是如何工作的。
这可能是一个愚蠢的问题,但我对此并不感到困惑。而我正在发生的事情正在加剧困惑。对我来说,似乎第一次请求的操作没有完成。
这是Websphere应用服务器,如果有帮助的话。
答案 0 :(得分:2)
WebSphere Web Container为所有请求使用线程池。
对于任何请求(无关紧要),从池中获取线程,处理请求,线程返回池中。
即使请求是一个接一个,也不能保证相同的线程会处理它们。
如果您发现一个请求会干扰另一个请求,则很可能是您在代码中执行的操作,而不是由于WebSphere的行为方式。
答案 1 :(得分:2)
没有。每个请求都独立于其他请求。 websphere中没有线程关联。教你自己的一个好方法是检查websphere日志。当WebSphere将记录写入其日志文件时,例如SystemOut.log等日志包含一个线程ID。以下是WebSphere日志文件中的示例记录:
[12/11/08 13:06:36:830 CST] 0000002e VirtualHost I .....
第二个字段是线程id,它是“0000002e”。因此,您可以通过这种方式关联两个不同线程处理两个请求的方式。希望对你有意义。