По умолчанию WebLogic уничтожает застрявшие потоки после 15 минут (600 с), этим управляют StuckThreadMaxTime
параметр. Однако я не могу найти больше деталей о том, как точно "stuckness" определяется. Конкретно:
wait()
- как метод? Что-то еще?Мой вариант использования является загрузкой огромных файлов через систему разрешения. Так как пользователь должен аутентифицироваться и иметь полномочия просмотреть файл, я не могу (или, по крайней мере, не знайте, как), оставляют это простому серверу HTTP, например, Apache. И потому что файлы могут быть огромными, загрузка могла (по крайней мере, в теории), занимают больше чем 15 минут.
Weblogic НЕ уничтожает зависшие потоки после StuckThreadMaxTime
. Он не может этого сделать, сообщение представляет собой только информацию о статусе, чтобы вы (то есть администратор) знали, что поток пересек 10 минут (600 секунд = 10 минут, а не 15)
Это настраиваемое значение.
Таймер запускается, когда поток начинает обрабатывать запрос на сервере. Поток не будет убит, но фактически продолжит обработку до завершения операции. поэтому в вашем случае вам не нужно беспокоиться о том, что поток будет убит, он только что сообщил вам о затраченном времени, о котором вы знаете в этом случае использования.
Это относится ко всем потокам AFAIK - любой порожденный поток также будет работать по одним и тем же правилам.
IMHO, Weblogic (или любой сервер приложений) не место для хранения и обслуживания больших файлов. Это идеально подходит для уровня веб-сервера - мы используем SunOne, на котором можно запустить сервлет загрузки файлов. В вашем случае вам понадобится Tomcat вместе с вашим Apache для оптимизации этого.