Manejo de solicitudes HTTP y respuestas 409
IBM Traveler maneja solicitudes HTTP de determinadas formas que pueden producir respuestas 409.
Toda la comunicación entre el servidor de IBM Traveler y sus dispositivos se maneja sobre HTTP. Cuando se realiza una solicitud HTTP a Domino, HTTP la pasa al servlet de IBM Traveler, que se ejecuta como parte de la tarea HTTP de Domino. El servlet es principalmente un "paso a través" a la tarea de IBM Traveler sobre un socket local. Esto significa que la solicitud se pasa a IBM Traveler y, a continuación, el servlet espera la devolución de la respuesta al dispositivo como una respuesta HTTP.
Las operaciones de red entre el dispositivo y Domino HTTP se ven en el nivel de Domino HTTP, pero no se pasan a los servlets que se ejecutan en el contenedor web de Domino HTTP. Por lo tanto, el servlet de IBM Traveler no sabe si el dispositivo pierde conectividad o si cierra intencionadamente la solicitud HTTP antes de recibir una respuesta.
HTTP tiene muchos códigos de respuesta definidos. 200 es Correcto. 409 es un Conflicto. Hay otros códigos de respuesta, pero aquí nos centraremos en estos dos.
Se sabe que la mayoría de dispositivos mantienen solo una solicitud HTTP abierta con el servidor en cualquier momento dado. Si el dispositivo necesita realizar una nueva solicitud, cerrará la solicitud anterior y abrirá la nueva. Si los dispositivos pierden conectividad, la solicitud anterior se cerrará automáticamente y el dispositivo abrirá una nueva solicitud cuando se restaure la conectividad. Cuando se cierran estas solicitudes (por el motivo que sea), Domino HTTP sabe que se han cerrado, pero el servlet de IBM Traveler no. Como resultado, la solicitud permanecerá abierta y continuará utilizando recursos del sistema, incluida la hebra HTTP. Para liberar estos recursos, IBM Traveler tiene lógica para cerrar solicitudes anteriores si se recibe una nueva solicitud y se sabe (a partir de información anterior) que el dispositivo ha cerrado estas solicitudes anteriores. Para cerrar la solicitud, el servlet de IBM Traveler debe enviar alguna respuesta a Domino HTTP, que a continuación intentará proporcionar dicha respuesta; esta respuesta finalmente no se podrá entregar ya que la solicitud se ha cerrado, pero se registrará durante el proceso. El código HTTP que IBM Traveler utiliza en este caso es 409, siguiendo la lógica de que esta nueva solicitud está en conflicto con la solicitud anterior. Por lo tanto, es posible que vea muchas respuestas HTTP 409 en los registros (IBM Traveler y HTTP). Aunque no son respuestas 200 (Correcto), no indican un problema y representan la forma en que se gestionan los recursos HTTP en estas circunstancias.
Si hay proxies o cortafuegos implicados en el sistema, es posible que estos aún tengan abiertas sus propias solicitudes y obtengan también las respuestas 409. Sin embargo, el dispositivo finalmente no debe recibirlas, ya que la solicitud se ha abandonado al menos en un punto de la ruta entre el dispositivo y el servidor.