cal*_*ger 10 java multithreading tomcat servlets
反正有没有配置tomcat来保留特定servlet或webservice的线程?我知道这可能是在servlet过滤器中以编程方式完成的.
因此,假设我使用250个服务线程的默认配置,但我希望为特定的servlet/webservice保留其中的20个?
也许这显然是不可能的 - 如果是这样,有人可以解释为什么?
我正在使用tomcat 6.
根据servlet规范,这是不可能的.但是在Tomcat中,您可以定义在不同端口上运行的多个连接器.每个连接器都有一个单独的线程池:
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="10443" />
Run Code Online (Sandbox Code Playgroud)
您将找到如何在Tomcat 中的server.xml文件undere /conf目录中配置线程池的示例.
现在,您可以使用8080(默认)和8081(上面配置)访问您的Web应用程序.通过8081的请求将使用不同的线程池.您现在要做的就是将所有servlet路由到8080,将您的特定线程路由到8081(使用完全独立的线程池).
如果您不希望有人滥用此功能,请添加servlet过滤器以根据请求的URI检查是否使用了正确的端口.
无论如何阅读你的理由:
我有一个特定的同步服务,可以锁定很多服务线程
您最好启动并管理自己的线程池(签出ExecutorService)并使用异步servlet.更简单和便携.
Nim*_*sky -6
你为什么要这样做?
Tomcat 可以很好地处理线程,如果达到最大值,则无论如何都需要增加最大值。那么保留一些有什么好处呢?保留一些仅意味着您可以更快地达到最大值,并且在不需要时不会有效地使用它们。
简而言之,不要这样做。
| 归档时间: |
|
| 查看次数: |
2264 次 |
| 最近记录: |