如何仅为一个新的restful Web服务配置卡住的线程处理?

时间:2015-08-25 11:52:10

标签: java rest configuration weblogic workmanagers

我正在开发一个宁静的Web服务,该服务应该返回大量文件(2GB或更大)。执行此Web服务当然需要时间。在使用多个并行下载进行测试时,WLS会抛出BEA-000337错误(下载时间超过" Stuck Thread Max Time"设置为服务器配置)。

我的问题是,我无法找到一种方法来仅针对新的网络服务进行调整。 " Stuck Thread Max Time"设置在服务器级别设置,这意味着它将影响所有其他服务。这是不可接受的。我需要一种方法来为新服务设置它。

我似乎应该能够使用自己定义的WorkManagers,但我可以在WorkManagers文档中找到的唯一配置选项是处理卡住的线程,而不是如何识别线程是否卡住。

我的问题是:

有没有办法在wls中配置,只针对这个新的Web服务,它应该如何识别卡住的线程以及它应该如何处理这些线程?

我使用的WLS版本是10.3.6

2 个答案:

答案 0 :(得分:0)

您的处理过程很费时间,并且StuckThreadMaxTime的默认设置设置为600秒,您将在日志中看到此类错误。

您可以将StuckThreadMaxTime设置为更大的值(它位于weblogic控制台上的域:“环境”>“环境”>“服务器”>“管理服务器”>“配置/调整”中

答案 1 :(得分:0)

Weblogic是JavaEE应用程序的应用程序服务器,使应用程序服务器具有吸引力的功能之一是它们充当容器来处理许多其他事情,这些事情本应通过编程来完成。其中之一是线程管理。因此,在EJB限制中,您可以找到:

-创建或管理线程

-使用线程同步原语与其他企业bean实例同步访问

这是因为线程处理取决于容器。 在weblogic控制台中,您可以为每个受管服务器(“配置”>“调整”选项卡)配置“固定线程最大时间”参数,将默认值更改为600秒。 无论如何,请记住,当线程处理超过600秒时,您会在日志上看到错误,因为Weblogic只是将线程归类为“卡住”,但是处理继续进行,并且在处理结束时线程最终可能会被卡住。

这可能有用:

https://docs.oracle.com/cd/E84527_01/wls/WLACH/taskhelp/tuning/TuningExecuteThreads.html