2010-06-24 6 views
0

포함 이 모든 작업은 내가 응답을 커밋하지 않고 초기 페이지를 보낼 수있는 유일한 방법은 HttpResponse 작가를 사용하여 수동으로 작성하는 것입니다 ...서블릿 3.0 내가 서블릿 3.0 API를 사용하여 다음과 같은 동작을 달성하기 위해 노력하고있어 HTML 페이지

나는 좋았어요 AsyncContext에 문제가 발생하지 않고 HTML 페이지에 RequestDispatcher #include와 유사한 것을 사용하는 방법이 있다면 ering을 사용하십시오. 이 그것을 을 렌더링하기 위해 컨테이너에 최종 응답을 보내는 운명, 많은 내가 인터넷에서 읽을 : 어떤 것들은 내가 지금까지 시도하고 작동하지 않았다 :

  • 사용 AsyncContext 번호 파견
  • RequestDispatcher # forward : OutputStream에 더 많은 내용을 쓰려고 시도하여 IllegalStateException이 발생합니다.
  • 사용 :이 메소드를 호출하기 전에 AsyncContext를 초기화하면 request.isAsyncSupported가 true를 반환하고 false를 반환합니다. . 나는 그것이로 flushBuffer (호출) 정상 서블릿 비동기 서블릿에서 파견하는 것이 가능하다는 것을 언급 일부 선이 SPEC (가) 서블릿 3.0,

또한 응답에 true로 플래그를 커밋 설정하지만, 커밋 것을 읽기 대답. 정적 HTML 페이지가이 카테고리에 속한다고 생각합니다.

스트리밍 된 응답을 클라이언트에 다시 보낼 수있는 능력에 영향을주지 않으면 서 우아한 포함을 수행하는 방법에 대한 아이디어가 있으면 알려 주시기 바랍니다.

감사

답변

0

하나 개의 솔루션 (안 하나) : 그냥 HTML 페이지 인 경우에, 다음 HTML에서 HTML 페이지 자체를 작성하고 업데이트를 제공하는 데 필요한 serrvlet에 아약스 호출을한다.

+0

답변 해 주셔서 감사합니다. 서블릿 3.0 API를 독점적으로 사용하여 서버 푸시를 수행하려고합니다. 따라서 비동기 응답 만 보낼 수 있습니다. 이것은 서블릿에 대한 하나의 호출이 될 것이고 서블릿은 여러 응답을 리턴 할 것입니다 (이것은 응답을 커밋하지 않고 플러시만으로 이루어집니다). – fmoga

+0

아직 비동기 API로 연주하지 않았습니다. 그러나 https://atmosphere.dev.java.net/ 혜성 구현이 있습니다! 어쩌면 볼 가치가있다. – Redlab

0

데이터를 저장하는 페이지에서 정적 요소를 사용하고 requestdispatcher를 사용하십시오.

또는 response.setHeader ("refresh", "5; URL = officer.html")를 사용하여 이러한 정렬로 전체 페이지를 새로 고칠 수도 있습니다.

응답이 서블릿에 커밋되지 않고 여러 요청을 보낼 필요가 있다는 것을 이해하지 못합니다. 서빙 스레드와 여러 번 상호 작용하려고합니까?

관련 문제