Problema Java e Tomcat - Sessioni

martedì 07 agosto 2007 - 10.43

mauro_roma Profilo | Newbie

Salve, sono nuovo e non so neanche se il forum è quello giusto in cui postare.
Sto seguendo un progetto in Java basato su EJB, il tutto messo su application server Tomcat.

Ho un problema abbastanza serio, che vi posso riassumere cosi :
Da una pagina web lancio la ricerca di alcuni dati impostando dei filtri all'interno della pagina.

Se questa query ci mette molto a tornare un risultato e io cambio i filtri e lancio di nuovo la ricerca cosa succede (ammesso che la seconda ricerca sia piu veloce):

Vengono visualizzati inizialmente i valori estratti dalla prima query, ma poi il recordset lanciato per primo, che nel frattempo ha finito di essere caricato, torna all'application server un insieme di dati che viene messo in sessione...

C'è un modo per risolvere tutto ciò a livello di application server?In sostanza, se una pagina lancia due volte una ricerca, devi considerare solo la seconda...

Grazie Mille.
Mauro.

Brainkiller Profilo | Guru

>Salve, sono nuovo e non so neanche se il forum è quello giusto
>in cui postare.

Beh qui nell'Off Topic va bene anche se questo è un sito prevalentemente su .NET.

>Se questa query ci mette molto a tornare un risultato e io cambio
>i filtri e lancio di nuovo la ricerca cosa succede (ammesso che
>la seconda ricerca sia piu veloce):

Prima cosa negativa, è che ci mette tanto tempo a ritornare i risultati. Sarebbe l'ideale verificare come è scritta la query, analizzarla, eventualmente applicare se già non ci sono degli indici sulle tabelle, e fare un po' di tuning. Un database che espone dati al pubblico e che ritorna dati con una certa lentezza ha poco significato. Se dopo l'analisi di cui sopra è ancora lenta forse è l'occasione di cambiare o potenziare il server.

Seconda osservazione, non dare la possibilità all'utente di lanciare più volte la pagina o la query e segnalare per esempio "Query in corso... Attendere". Ci sono vari meccanismi sia con applicazioni a finestra che Web.

>Vengono visualizzati inizialmente i valori estratti dalla prima
>query, ma poi il recordset lanciato per primo, che nel frattempo
>ha finito di essere caricato, torna all'application server un
>insieme di dati che viene messo in sessione...

Bella domanda. Credo che il primo vada a morire. Nel momento in cui tu rifai una query, la vecchia connessione al DB non ha più un endpoint e va a morire. Quindi ti arrivano i risultati della seconda query.

Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5