0

저는 내장 된 부두 서버를 시작하고이를 위해 SelectChannelConnector를 사용하고 있습니다. 레거시 이유로 나는 부두 (Jetty) 6을 사용해야합니다.부두에서 maxIdleTime 시뮬레이션 6

서버의 끝에서 연결을 정확하게 시뮬레이트 할 수 없습니다. connector.setMaxIdleTime을 약 20ms의 매우 낮은 값으로 설정하면 여전히 실패하지 않습니다.

클라이언트 측에서는 부두 서버에서 데이터 스트림을 읽습니다.

참고 setMaxIdleTime 값을 약 10ms로 설정하면. 연결이 제대로 닫히고 "예기치 않은 EOF가 서버에서"발생하지만 클라이언트 쪽에서 http 헤더를 구문 분석하면이 문제가 발생합니다. 내가하고 싶은 것은 실제 콘텐츠를 읽을 때와 똑같은 동작을 시뮬레이트하는 것입니다.

답변

0

기존의 이유로,이를 수행하는 가장 좋은 방법은 구현할 커넥터를 직접 작성하는 것입니다. (심지어 GWT/GAE와 같이 여전히 Jetty 6에 의존하는 프로젝트일지도 모릅니다. 슬프게도 사용자 정의 커넥터 중 어느 것도 오픈 소스가 아닙니다)

Jetty 6에서 maxIdleTime은 실제로는 단지 Socket.setSoTimeout(int) 행동 차단. Jetty 7과 비동기 모든 것에 초점을 맞추면 그 정의가 크게 바뀌어서 구성 가능한 maxIdleTime이 새로운 현실을 나타 내기 위해 이름이 변경되었습니다. 유래의 질문에 과거의 답변을 참조하십시오 : When does maxIdleTime trigger?

주의 : 부두 (6) 2010 년 EOL 없었다 인해 고정되지 않은 취약점에 더 이상 개방 된 인터넷에 사용하기 적합 또는 안전합니다. 로드 밸런서, 프록시, nginx 또는 아파치 httpd를 사용하지 않아도 도움이 될 것입니다. (고도로 통제되고 제한된 환경에서 사용하는 것이 좋습니다.)

적어도 Jetty 7로 업그레이드하면 유휴 시간 초과 지원과 함께 서블릿 개정과 동일한 JVM 요구 사항과 함께 1236과이 동일합니다.

+0

감사합니다. Joakim Erdfelt. 프로덕션 환경에서이 문제를 겪고 있으며 로컬 설정에서 재현하려고했습니다. –

+0

행운을 빌어, "시뮬레이션 된 최대 일기 예보"가 실제로 무엇을 기대하는지 명확하게 알고 싶을 것입니다. 당신이 염두에두고있는 정의와 Socket.setSoTimeout (int)과 관련된 정의가 정렬되지 않을 수도 있습니다 (선상에서 혼란스러워하는 7 일 전의 혼란) –

관련 문제