2012-05-12 1 views
0

У меня есть приложение работает на сервере jboss 4.2.2 с jdk 1.6. У программы есть ошибка в том, что он не устанавливает тайм-аут соединения HTTP, когда он открывает свое соединение. Поэтому, когда у третьей стороны есть проблемы, соединение вешается навсегда, что также заставляет поток зависать. И скоро у нас заканчивается нить. Однако из-за цикла выпуска мы не можем сразу исправить ошибку. Мне было интересно, есть ли способ прекратить сетевое подключение извне jvm? Итак, поток может быть выпущен обратно в пул потоков? У меня потенциально есть много соединений, открытых на одном и том же сайте сторонних разработчиков, поэтому приятно разобраться в проблеме соединения и просто убить его.Как убить соединение зависания в jvm, когда вы находитесь за пределами jvm (ubuntu box)?

Спасибо,

ответ

0

Вы можете вычленить вывод netstat и убить соединение с помощью tcpkill, и запустить это с помощью cron.

Однако это не может быть более чем очень временным решением.

0

This ServerFault Q & A может быть уместным. В нем объясняется, что tcpkill будет работать только при активном трафике в соединении.

(Это потому, что ... по-видимому ... tcpkill работает, отправив пакет TCP RESET. Для этого ему необходимо знать правильный порядковый номер, и это может только понять это, исследуя другие пакеты для сеанса.)

Смежные вопросы