hdm
11-02-2012, 20:35
Salve,
ho sviluppato un applicazione in java che fa uso di mysql ma purtroppo, dopo ore di utilizzo, ho riscontrato un problema con la connessione a mysql stesso.
Quadro generale del lavoro che svolge l'applicazione:
L'applicazione è un server che gira in background e lavora soltanto quando un client si connette ad esso per usufruire dei suoi servizi.
Ad ogni client connesso il server dedica un Thread, all'interno del quale viene aperta una nuova connessione al db e stanziati oggetti necessari ad offrire determinati servizi.
Durante la comunicazione con un client, il server fa uso di mysql per registrare parte dei dati che il client stesso gli manda, effettua elaborazioni e risponde al client...
Nel Thread principale, all'avvio del server, viene aperta una connessione al db necessaria al server per le sue operazioni, esterne ad ogni operazione aperta con un client.
Quest'applicazione sta praticamente accesa 24h su 24h, e dopo ore di utilizzo ho iniziato ad avere questo errore
No operations allowed after connection closed.Connection was implicitly closed by the driver.
e il server praticamente non mi permetteva di far più nulla perché non aveva connessione al db a quanto pare.
L'errore dice che non è possibile effettuare operazioni dopo che la connessione è stata chiusa, ed è stata chiusa dal driver... ma perché? presumo per un timeout... o ci sono altri casi? è possibile che sia andato in crash il driver?
conoscete un modo per risolvere.... ho già cercato un giro su google ma non riesco a trovare nulla di chiaro
Uso JConnector per connettermi a mysql
Se non sbaglio le connessioni vengono chiuse automaticamente da mysql dopo 8 ore di inattività (wait_timeout)... Pensando il problema fosse questo, ho cercato di ricreare la situazione impostando un wait_timeout di 4 secondi.
A questo punto apro una connessione con DB, una sleep attende 6 secondi prima di proseguire con il codice e con l'esecuzione di una query, dopo i 6 secondi in effetti la connessione sembra che sia stata chiusa ma ottengo un altro tipo errore
The last packet successfully received from the server was 6.020 milliseconds ago. The last packet sent successfully to the server was 18 milliseconds ago.
non so più dove sbattere la testa... c'è qualcuno che può darmi una mano o che conosce il reale motivo del primo errore che ottengo (No operations allowed after connection closed.Connection was implicitly closed by the driver.)
grazie mille per il vostro aiuto
ho sviluppato un applicazione in java che fa uso di mysql ma purtroppo, dopo ore di utilizzo, ho riscontrato un problema con la connessione a mysql stesso.
Quadro generale del lavoro che svolge l'applicazione:
L'applicazione è un server che gira in background e lavora soltanto quando un client si connette ad esso per usufruire dei suoi servizi.
Ad ogni client connesso il server dedica un Thread, all'interno del quale viene aperta una nuova connessione al db e stanziati oggetti necessari ad offrire determinati servizi.
Durante la comunicazione con un client, il server fa uso di mysql per registrare parte dei dati che il client stesso gli manda, effettua elaborazioni e risponde al client...
Nel Thread principale, all'avvio del server, viene aperta una connessione al db necessaria al server per le sue operazioni, esterne ad ogni operazione aperta con un client.
Quest'applicazione sta praticamente accesa 24h su 24h, e dopo ore di utilizzo ho iniziato ad avere questo errore
No operations allowed after connection closed.Connection was implicitly closed by the driver.
e il server praticamente non mi permetteva di far più nulla perché non aveva connessione al db a quanto pare.
L'errore dice che non è possibile effettuare operazioni dopo che la connessione è stata chiusa, ed è stata chiusa dal driver... ma perché? presumo per un timeout... o ci sono altri casi? è possibile che sia andato in crash il driver?
conoscete un modo per risolvere.... ho già cercato un giro su google ma non riesco a trovare nulla di chiaro
Uso JConnector per connettermi a mysql
Se non sbaglio le connessioni vengono chiuse automaticamente da mysql dopo 8 ore di inattività (wait_timeout)... Pensando il problema fosse questo, ho cercato di ricreare la situazione impostando un wait_timeout di 4 secondi.
A questo punto apro una connessione con DB, una sleep attende 6 secondi prima di proseguire con il codice e con l'esecuzione di una query, dopo i 6 secondi in effetti la connessione sembra che sia stata chiusa ma ottengo un altro tipo errore
The last packet successfully received from the server was 6.020 milliseconds ago. The last packet sent successfully to the server was 18 milliseconds ago.
non so più dove sbattere la testa... c'è qualcuno che può darmi una mano o che conosce il reale motivo del primo errore che ottengo (No operations allowed after connection closed.Connection was implicitly closed by the driver.)
grazie mille per il vostro aiuto