ClientDocumentStfulOwnerImpl[] clientOwnerList = getClientDocumentStfulOwnerArray();
if (clientOwnerList != null)
{
for(int i = 0; i < clientOwnerList.length; i++)
{
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();