서블릿에 요청을 제출하는 jsp 페이지가 있습니다. 그러나 서블릿은 엄청난 수의 파일을 검색해야하며 시간이 오래 걸립니다. 그 동안 클라이언트가 닫히면 서블릿은 여전히 검색을 수행하며 이는 우리 리소스의 낭비입니다. 클라이언트가 여전히 응답을 기다리고 있다면 서블릿에서 알 수 있습니까? 예 : 우리 jsp 페이지가 닫혀 검색을 멈출 수 있는지 서블릿에서 알아야합니다.어쨌든 우리는 서블릿에서 클라이언트가 아직 대기 중임을 알고 있습니다.
답변
Http는 상태 비 저장 프로토콜입니다. 따라서 기술적으로 검사 할 연결 상태가 없습니다. 그러나 연결 상태를 모방하는 방법은 다음과 같습니다.
서버와 클라이언트 (웹 브라우저) 모두에서 처리를 추가해야합니다.
서버에서는 세션 객체에 청취 비트 값을 저장할 수 있습니다. 하트 비트는 클라이언트가 마지막으로 요청한 타임 스탬프를 의미합니다. 임계 값을 설정합니다. 10 초를 가정 해 봅시다. 클라이언트 (웹 브라우저)가 10 초 이상 하트 비트 메시지를 전송하지 않으면 프로세스를 포기합니다.
클라이언트 (웹 브라우저)에서 자바 스크립트를 사용하여 10 초마다 하트 비트 메시지를 보낼 수 있습니다. Ajax를 사용하여 서버에 메시지를 보냅니다. 다시 말해서 클라이언트가 아직 대기 중임을 서버에 알려줍니다.
참고! 서버에 세션이 설정되어 있는지 확인해야합니다. 서버는 세션 범위에서 열기 비트 메시지를 저장해야합니다. 클라이언트는 세션 당 둘 이상의 요청을 갖습니다.
마지막으로 JSP는 서블릿입니다. JSP는 단순히 서블릿을 작성하는 또 다른 방법입니다. 컨테이너 (예 : Tomcat)는 JSP를 서블릿으로 컴파일합니다. JSP는 서버에서 실행되며 웹 브라우저에서 실행되지 않습니다. 예, Javascript와 HTML을 서블릿 (또는 JSP)에서 웹 브라우저로 보낼 수 있습니다.
희망이 있습니다. 행운을 비네.
귀하의 솔루션이 실현됩니다. 나는 시도하고 업데이트 할 것이다. 이에 대해 응답 해 주셔서 감사합니다. – user2031973
도움이 된 것을 기쁘게 생각합니다 :) 제 대답을 수락하는 것을 고려해보십시오 (I.E. 마크는 내 대답을 받아 들였습니다). 참고 - 조금 걸릴지 모르지만 지금은 내가 설명한 패턴이 작동합니다. 나는 생산에서 그것을 보았다 :) – lorinpa
당신에게 이것을 묻기를 유감스럽게 생각한다. 나는 javascript/ajax에서 그렇게 좋지 않다. 내 서블릿에 하트 비트를 보내기 위해 참조 할 수있는 예제가 있습니까? – user2031973
- 1. 우리는 Windows에서 수행되는 작업을 알고 있습니다.
- 2. RaiseCanExecuteChanged 및 CanExecute에 잘못 처리 중임을 알고 있습니다.
- 3. 아직 HTTP/1.0 클라이언트가 있습니까?
- 4. zip 파일이 손상되었거나 아직 전송 중임을 이해하는 방법
- 5. 는 Progamatically 우리는 메시지를 알고 코어 데이터
- 6. jQuery가 작동 중/대기 중 /로드 중임을 표시하는 방법은 무엇입니까?
- 7. 언제 전화 할지를 알고 있습니다.
- 8. 채널에서 아직 구독 취소되었습니다. 채널에 아직 있습니다.
- 9. 웹 페이지가 PHP 스크립트에서 대기 중임을 감지하는 방법
- 10. UNIX에서 전경 프로세스가 입력 대기 중임을 감지하는 방법은 무엇입니까?
- 11. CPU가 RAM 또는 일부 주변 장치에서 읽는 중임을 알고 있습니까?
- 12. 젠토 우리는 우리의 젠토 사이트를 구축 클라이언트가
- 13. nuxeo 자동화 체인에 클라이언트가 있습니다
- 14. 에 관한 DOM4J는, 우리는 아래에 알고 싶습니다
- 15. 어쨌든 interop을 더 빠르게 만들 수 있습니다.
- 16. UIActivityViewController에서 메일받는 사람을 알고 있습니다.
- 17. MVP보기가 모델을 알고 있습니다.
- 18. 인터페이스가 구현자를 알고 있습니다.
- 19. 서버는 클라이언트가 아직 연결되어 있음을 어떻게 알 수 있습니까?
- 20. SDK - R18에 아직 버그가 있습니다.
- 21. Struts 양식이 아직 비어 있습니다.
- 22. 아직 다차원 배열과 싸우고 있습니다
- 23. SoundManager2에 불규칙한 대기 시간이 있습니다.
- 24. 어쨌든 우리는 이메일의 제목에 애니메이션 GIF를 가질 수 있습니까?
- 25. 어쨌든 HQL에서 날짜 계산을 할 수 있습니다
- 26. C 프로그램 어쨌든 내 dayofyear 프로그램을 단순화하기 위해 알고 싶습니다?
- 27. 어쨌든 새 파일이 폴더에 추가 된 것을 알고 계신가요? C#
- 28. 다른 언어 클라이언트가 혼합 사용할 수 있습니다 redis 수 있습니까? 우리는 아파치 중고품 RPC 프레임 워크는 예를 들어 다른 언어 클라이언트를 저장 및 액세스를 사용할 수 있습니다 알고
- 29. 우리는 하나의 서블릿에서 getwriter와 forward를 수행 할 수 있습니까?
- 30. 우리는 생성자에서 속성에 액세스 할 수 있습니다.
요청이 서버에 전송되면 클라이언트가 사용할 수 있는지 여부를 확인할 수 없기 때문에 가능하지 않습니다. – Kick
이것은 나에게 설계상의 문제처럼 들린다. 웹 요청에 의해 장기 실행 작업이 생성되면 비동기 적으로 (웹 요청과 관련하여) 실행 한 다음 결과를 웹에 표시하는 것이 좋습니다. 자신이하려는 일에 대해 더 많이 알지 못하면 확신하기가 어렵습니다. – matthudson