Webservice 仅限于单线程?
Webservice restricted to a single thread?
今天,在 RESTlet 中测试一些速度很慢的代码(必须等待来自慢速源的数据)时,我注意到 Wildfly 不允许我启动额外的线程,并且只会 运行 RESTlet 本身也在一个线程中,这意味着多个连接必须等待前一个连接完成。
奇怪的是,即使使用 ManagedExecutorService
,通过 urn:jboss:domain:ee:3.0
子系统配置以允许更多线程,仍将仅限于产生一个新线程,然后按顺序处理请求。
我是不是误解了该子系统的工作原理?或者这是对 RESTEasy 方面的某种限制?我过去曾使用具有并发性的普通 WebServlet 而没有遇到这种行为。
可能你的问题出在客户端。你如何测试你的代码?我试图通过在某种方法中放置 Thread.sleep(5000)
来访问 Wildfly 8.2 中的某些 REST 服务。例如,如果我在 Firefox 或 Chrome 中打开两个选项卡,并发处理一个请求,需要 10 秒。然而,并行使用 Firefox 和 Chrom,它们都在 5 秒内得到响应。
今天,在 RESTlet 中测试一些速度很慢的代码(必须等待来自慢速源的数据)时,我注意到 Wildfly 不允许我启动额外的线程,并且只会 运行 RESTlet 本身也在一个线程中,这意味着多个连接必须等待前一个连接完成。
奇怪的是,即使使用 ManagedExecutorService
,通过 urn:jboss:domain:ee:3.0
子系统配置以允许更多线程,仍将仅限于产生一个新线程,然后按顺序处理请求。
我是不是误解了该子系统的工作原理?或者这是对 RESTEasy 方面的某种限制?我过去曾使用具有并发性的普通 WebServlet 而没有遇到这种行为。
可能你的问题出在客户端。你如何测试你的代码?我试图通过在某种方法中放置 Thread.sleep(5000)
来访问 Wildfly 8.2 中的某些 REST 服务。例如,如果我在 Firefox 或 Chrome 中打开两个选项卡,并发处理一个请求,需要 10 秒。然而,并行使用 Firefox 和 Chrom,它们都在 5 秒内得到响应。