我有一个 Tomcat 应用程序,我需要两个不同的 servlet 或同一个来并行响应我的请求。情况是我有第一个请求要求下载医学影像,而我有另一个 AJAX 客户端请求在第一个请求完全完成之前获取图像。但是由于某种原因,直到第一个请求结束,服务器才响应我的第二个请求。
为了实现并发 servlet 执行,必须改变什么?我们有一个非常好的服务器,它有多个驱动器、多个内核。我正在使用 Tomcat 6。任何可以探索的想法都会很棒。
我有一个 Tomcat 应用程序,我需要两个不同的 servlet 或同一个来并行响应我的请求。情况是我有第一个请求要求下载医学影像,而我有另一个 AJAX 客户端请求在第一个请求完全完成之前获取图像。但是由于某种原因,直到第一个请求结束,服务器才响应我的第二个请求。
为了实现并发 servlet 执行,必须改变什么?我们有一个非常好的服务器,它有多个驱动器、多个内核。我正在使用 Tomcat 6。任何可以探索的想法都会很棒。
如果发生这种情况,则与 Tomcat 无关。可能您正在某处使用同步(隐式或显式)。
但是,您可以明确地管理线程池:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
或者
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
即您可以指定最大线程数或使用线程池。更多信息在这里http://tomcat.apache.org/tomcat-5.5-doc/config/http.html