2014-02-15 1 views
0

서블릿에 요청을 제출하는 jsp 페이지가 있습니다. 그러나 서블릿은 엄청난 수의 파일을 검색해야하며 시간이 오래 걸립니다. 그 동안 클라이언트가 닫히면 서블릿은 여전히 ​​검색을 수행하며 이는 우리 리소스의 낭비입니다. 클라이언트가 여전히 응답을 기다리고 있다면 서블릿에서 알 수 있습니까? 예 : 우리 jsp 페이지가 닫혀 검색을 멈출 수 있는지 서블릿에서 알아야합니다.어쨌든 우리는 서블릿에서 클라이언트가 아직 대기 중임을 알고 있습니다.

+0

요청이 서버에 전송되면 클라이언트가 사용할 수 있는지 여부를 확인할 수 없기 때문에 가능하지 않습니다. – Kick

+0

이것은 나에게 설계상의 문제처럼 들린다. 웹 요청에 의해 장기 실행 작업이 생성되면 비동기 적으로 (웹 요청과 관련하여) 실행 한 다음 결과를 웹에 표시하는 것이 좋습니다. 자신이하려는 일에 대해 더 많이 알지 못하면 확신하기가 어렵습니다. – matthudson

답변

2

Http는 상태 비 저장 프로토콜입니다. 따라서 기술적으로 검사 할 연결 상태가 없습니다. 그러나 연결 상태를 모방하는 방법은 다음과 같습니다.

서버와 클라이언트 (웹 브라우저) 모두에서 처리를 추가해야합니다.

서버에서는 세션 객체에 청취 비트 값을 저장할 수 있습니다. 하트 비트는 클라이언트가 마지막으로 요청한 타임 스탬프를 의미합니다. 임계 값을 설정합니다. 10 초를 가정 해 봅시다. 클라이언트 (웹 브라우저)가 10 초 이상 하트 비트 메시지를 전송하지 않으면 프로세스를 포기합니다.

클라이언트 (웹 브라우저)에서 자바 스크립트를 사용하여 10 초마다 하트 비트 메시지를 보낼 수 있습니다. Ajax를 사용하여 서버에 메시지를 보냅니다. 다시 말해서 클라이언트가 아직 대기 중임을 서버에 알려줍니다.

참고! 서버에 세션이 설정되어 있는지 확인해야합니다. 서버는 세션 범위에서 열기 비트 메시지를 저장해야합니다. 클라이언트는 세션 당 둘 이상의 요청을 갖습니다.

마지막으로 JSP는 서블릿입니다. JSP는 단순히 서블릿을 작성하는 또 다른 방법입니다. 컨테이너 (예 : Tomcat)는 JSP를 서블릿으로 컴파일합니다. JSP는 서버에서 실행되며 웹 브라우저에서 실행되지 않습니다. 예, Javascript와 HTML을 서블릿 (또는 JSP)에서 웹 브라우저로 보낼 수 있습니다.

희망이 있습니다. 행운을 비네.

+0

귀하의 솔루션이 실현됩니다. 나는 시도하고 업데이트 할 것이다. 이에 대해 응답 해 주셔서 감사합니다. – user2031973

+0

도움이 된 것을 기쁘게 생각합니다 :) 제 대답을 수락하는 것을 고려해보십시오 (I.E. 마크는 내 대답을 받아 들였습니다). 참고 - 조금 걸릴지 모르지만 지금은 내가 설명한 패턴이 작동합니다. 나는 생산에서 그것을 보았다 :) – lorinpa

+0

당신에게 이것을 묻기를 유감스럽게 생각한다. 나는 javascript/ajax에서 그렇게 좋지 않다. 내 서블릿에 하트 비트를 보내기 위해 참조 할 수있는 예제가 있습니까? – user2031973

관련 문제