2013-05-24 2 views
5

브라우저의 HTTP 요청이 Restlet 서버에서 사용되는 단순 커넥터에 의해 무시되는 것처럼 보이는 이상한 문제가 있습니다.단순한 커넥터 삭제 요청이있는 Restlet?

서버 설정 : 인증 다이제스트

  • 으로 Restlet 2.1.2 서버
  • 으로 Restlet - 단순 확장
  • 으로 Restlet - 암호화 확장 기능 (단순 4.1.21와 함께 제공)

서버는 웹 페이지를 브라우저에 제공하고 javascript의 XMLHttpRequest를 사용하여 업데이트를 가져옵니다. 이러한 XMLHttpRequest 중 일부는 완료되지 않습니다. Chrome 용 자바 스크립트 디버거는 이러한 오류 상태를 보여줍니다. Firefox의 디버거는 HTTP 상태 코드 및 기록 된 응답없이 완료 시간을 기록합니다. 패킷 스니퍼는 문제가있는 요청이 실제로 서버에 보내지지만 서버는 응답하지 않음을 나타냅니다. 디버깅은 이러한 요청이 결코 서버 코드에 도달하지 못함을 보여줍니다.

Firefox, Chrome 및 IE의 문제를 확인했습니다. 세 가지 브라우저 (최신 버전) 모두가이 문제를 해결합니다. 또한 각 브라우저는 똑같은 요청에 대해 반복적으로 재현 가능한 문제를 겪고 있습니다. 이 요청 집합은 세 브라우저간에 서로 다릅니다.

정말 이상한 점은 컴퓨터의 IP 주소를 사용할 때가 아니라 서버의 컴퓨터 이름 (LAN에서 테스트 실행)을 사용할 때 문제가 발생한다는 것입니다. Digest에서 Basic 인증으로 전환하면 Simple 커넥터를 Jetty로 대체하는 것과 마찬가지로 문제가 사라집니다.

저는 지금 부두로 전환 할 의향이 있지만, 아직도 무슨 일이 일어나고 있는지 알고 싶습니다. 누구든지 전에 그런 행동을 본 적이 있습니까? 아니면 여기서 무엇이 잘못 될지 아이디어가 있습니까?

+0

인증과 함께 Restlet을 구성하는 코드를 게시해야합니다. – gma

답변

0

최근에 Restlet에서 비슷한 문제가 발생하여 일부 요청이 완료되지 않았습니다. 이슈는 Restlet 내의 비 동기화 된 맵 액세스였습니다.이 맵 액세스는 이미 수정되었습니다 (https://github.com/restlet/restlet-framework-java/issues/753).

CPU 트래픽이 많은 스레드가 하나 또는 여러 개 표시되는 경우이 문제의 영향을받을 수 있습니다.

XMLHttpRequests가 병렬로 제공되면 영향을받을 수 있습니다.

+0

그 특별한 문제는 아마도 무작위로 실패 할 것입니다. 그러나 제 경우에는 무시되는 요청 집합은 항상 재현 가능하게 동일합니다. 어떤 설정이 브라우저에 따라 다릅니다. 그래서 파이어 폭스는 한 세트의 요청에 대한 응답을 놓치고, IE는 또 다른 세트에, 크롬은 또 다른 세트에 대한 응답을 놓친다. –