ClientDocumentStfulOwnerImpl clientDoc = clientOwnerList[i];
long lastRequestTime = clientDoc.getLastRequestTime(); // No hace falta sincronizar
long interval = currentTime - lastRequestTime;
if (interval > maxInactiveInterval)
{
ItsNatStfulDocumentImpl itsNatDoc = clientDoc.getItsNatStfulDocument(); // No hace falta sincronizar
synchronized(itsNatDoc) // No es necesario sincronizar los padres pues esta acci�n s�lo afecta a este documento
{
clientDoc.setInvalid();
}
}
else
{
// Es posible que haya clientes de control remoto zombies asociados al documento de este cliente y que no pertenezcan
// a esta sesi�n, es posible que el usuario cerrara el cliente control remoto
// pero el navegador no notificara este cierre (ocurre en algunos), si el usuario sigue
// activo en otra p�gina la sesi�n seguir� viva por lo que el cliente zombie seguir�
// recibiendo c�digo JavaScript indefinidamente.
// Por tanto los intentamos limpiar aqu�:
ItsNatStfulDocumentImpl itsNatDoc = clientDoc.getItsNatStfulDocument(); // No hace falta sincronizar
synchronized(itsNatDoc) // No es necesario sincronizar los padres pues esta acci�n s�lo afecta a este documento
{
if (itsNatDoc.hasClientDocumentAttachedClient())
{
ClientDocumentAttachedClientImpl[] clientAttachList = itsNatDoc.getClientDocumentAttachedClientArray();
for(int j = 0; j < clientAttachList.length; j++)
{
ClientDocumentAttachedClientImpl clientDocAttached = clientAttachList[j];
ItsNatSessionImpl attachedSession = clientDocAttached.getItsNatSessionImpl();
if (attachedSession == this) continue; // No merece la pena, se procesar� despu�s