0

Я запускаю встроенный сервер Jetty и использую SelectChannelConnector для этого. По старым причинам я должен использовать Jetty 6.Имитация maxIdleTime в Jetty 6

Я не могу правильно смоделировать соединение рядом с концом сервера. При установке параметра connector.setMaxIdleTime на очень низкое значение около 20 мс он все равно не сработает.

На стороне клиента я читаю поток данных с сервера Jetty.

Примечание. Если значение setMaxIdleTime устанавливается равным 10 мс. Соединение правильно закрыто, и я получаю «неожиданный EOF с сервера», но это происходит, когда клиентская сторона анализирует заголовки HTTP. То, что я хочу сделать, это симулировать то же поведение, когда я читаю фактический контент.

ответ

0

По старым причинам наилучшим способом сделать это является создание собственного соединителя для его реализации. (даже проекты, которые все еще полагаются на Jetty 6, такие как GWT/GAE, сделали это. К сожалению, ни один из этих пользовательских разъемов не является открытым исходным кодом)

На Jetty 6 maxIdleTime действительно просто переводит на Socket.setSoTimeout(int), что действительно работает для блокировки поведения. Для Jetty 7 и сосредоточиться на асинхронном обращении, это определение сильно изменилось, настолько, что maxIdleTime как настраиваемый был даже переименован, чтобы представить новую реальность. См прошлого ответа на StackOverflow вопрос: When does maxIdleTime trigger?

ВНИМАНИЕ: Jetty 6 был EOL в 2010 году, и больше не подходят или безопасен для использования на открытом Интернет из-за неисправленные уязвимости. даже не помещая его в балансировщик нагрузки, прокси, nginx или apache httpd. (это нормально использовать в сильно контролируемых и ограниченных средах).

По крайней мере, обновление до Jetty 7 имеет ту же ревизию сервлета, что и требования к JVM, как Jetty 6, а также поддержку тайм-аута простоя и wont be EOL till the end of 2014.

+0

Thanks Joakim Erdfelt. Я сталкиваюсь с этой проблемой в производственной среде и пытаюсь воспроизвести мою локальную настройку. –

+0

Удачи вам, и вы, вероятно, захотите получить дополнительную информацию о том, что вы ожидаете от своего «имитируемого максимума». В качестве определения, которое вы имеете в виду, и того, которое связано с Socket.setSoTimeout (int), не может быть выровнено (общая путаница назад до причала - 7 дней) –

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