Tomcat을 사용하고 있습니다. ServletResponse.flushBuffer
에 대한 설명서는 다음과 같이 말합니다. "버퍼의 내용을 클라이언트에 강제로 기록합니다.이 메서드를 호출하면 응답이 자동으로 커밋되어 상태 코드와 헤더가 기록됩니다." 하지만이 문제를 해결할 수 없습니다. 클라이언트가 응답을 성공적으로 수신 할 때까지이 함수에서 내 doPost
메서드를 차단하겠습니까? 연결 시간이 좋지 않은 경우 ServletResponse.flushBuffer
스레드를 고정시킬 수 있습니까? 또는 전달이 비동기 적으로 수행됩니까?ServletResponse.flushBuffer - 응답이 배달 될 때까지 차단합니까?
제 목표는 내 고객이 응답을 보는 데 걸리는 시간을 측정하는 것입니다. flushBuffer
에 대한 호출 직전과 직후에 시간을 측정하고 싶지만이 시간에 클라이언트 소켓에 메시지를 전달하는 모든 프로세스가 포함되어 있는지 확실하지 않습니다. 클라이언트가 성공적으로 응답을받을 때까지
감사합니다, & rzej
나는 그것이 내 질문에 정확하지 않다고 본다. 내'doPost'/doGet 메소드가 추가 스레드를 시작하지 않는다는 가정에 덧붙여서'doPost' /'doGet' 메소드의 실행 만 차단하는 것을 차단했습니다. 나의 궁극적 인 목표는'doPost' /'doGet'에서 응답의 배달 시간을 측정하는 것입니다. – Andrzej
TCP 버퍼링으로 인해 할 수 없습니다. 측정 할 수있는 것은 TCP 송신 버퍼에 응답을 얻는 데 걸리는 시간입니다. 청크 분할 또는 스트리밍 전송 모드를 사용하지 않는 경우에도 Servlet 컨테이너의 내부 버퍼 (아마도 ByteArrayOutputStream)에 쓸 시간입니다. 귀하의 설명은 아무 것도 추가하지 않습니다. 동기화를하지 않는 한 어떤 블록이 현재 쓰레드이고, 서블릿이나 그 메소드는 차단되지 않습니다. – EJP