Ragazzi, scusate ma sono costretto a chiedere aiuto.
E' il mio primo progetto con le sessioni e spero sia un problemino "semplice".
La situazione è la seguente, sto facendo il sito di un'azienda, che per motivi che non sto quì ad elencare è realizzato un pò in java ed un pò in php ed io mi occupo della parte java, quando l'utente sceglie una tra le voci del menù, in realtà chiama server diversi (in base alla selezione) con tecnologia java o php a seconda dei casi.
Faccio un esempio (molto semplificato):

Voce di menù_1 chiama xxx.xxx.xxx.xxx/index.php
Voce di menù_2 chiama yyy.yyy.yyy.yyy/Login

Il metodo di comunicazione è tramite variabili hidden, in pratica se sto navigando il menù_1 e clicco menù_2, metto le variabili di sessione in variabili "comuni", e le passo ad una pagina html con una form che fa il submit all'onload (verso il server yyy.yyy.yyy.yyy/Login) distruggo la sessione php e a questo punto sono su server java con gli stessi dati di login del server precedente.
Ora il problema si crea se dal server java, l'utente torna al server php e poi di nuovo al server java, perchè all'entrata nel server java, io testo la sessione mediante session.isNew e all'uscita la invalido mediante il session.invalidate, quest'ultima istruzione però a quanto pare non distrugge la sessione ma la lascia andare in timeout, perchè al "secondo" accesso al server java, session.isNew è false e di conseguenza mi si "scasina" tutto il meccanismo di login.

Una soluzione che ho attuato è la seguente:
All'uscita dal server Java, rimuovo tutti gli attributi della sessione, e al successivo rientro, testo if(session.isNew() || session.getAttribute("nome") == null), però non so se è una soluzione "ortodossa", cioè così facendo rischio che il server accumuli molte sessioni che rimarranno zombie fino al loro timeout esatto?
Esistono metodi comuni o più efficaci di cui io ignoro l'esistenza?