OVH Cloud OVH Cloud

EOFException ou SQLException avec MySQL ??

6 réponses
Avatar
Nicolas
Bonjour,

J'utilise une applet java avec JDBC.

Pour certaines requetes, ou si j'attends trop longtemps sans rien faire,
il apparait une EOFException.

La console indique :

Echec de la requete precompilee : Communication link failure :
java.io.EOFException, underlying cause:null

** BEGIN NESTED EXCEPTION
java.io.EOFException

STACKTRACE :
java.io.EOFException
at com.mysql.MysqllO.readFully(MysqllO.java:1373)
...
at com.mysql.Connection.execSQL(Connection.java:2242)
...
** END NESTED EXCEPTION


Le message au debut "Echec de la requete precompilee" s'affiche dans un
catch (SQLException e).

Mon soucis est que d'une part quand j'effectue la requete sur
PHPMyAdmin, je n'ai pas de probleme, d'autre part, quand j'execute le
code avec une JFrame et MySQL local, je n'ai pas non plus le moindre
soucis (ou en tout cas, ils n'ont rien à voir :) ).

Cela fait un mois que ca m'empeche de mettre mon site officiellement en
ligne, ca devient très génant...

Merci de votre aide,
Nicolas

6 réponses

Avatar
David JOURAND
J'utilise une applet java avec JDBC.

Pour certaines requetes, ou si j'attends trop longtemps sans rien faire,
il apparait une EOFException.


Sans doute que la connection à la base est perdue... Il y a en effet des
timeout côté serveur. Il faut donc ouvrir une nouvelle coonnection MySQL à
chaque requête (ou groupe de requêtes liées).

Cela fait un mois que ca m'empeche de mettre mon site officiellement en
ligne, ca devient très génant...


C'est toujours une très très mauvaise idées de faire des requêtes sur la
base depuis le client (l'applet). Mieux faire les requêtes au niveau du
serveur (JSP, PHP, au autre...) et d'échanger les résultats avec l'applet
sous une forme ou une autre.

--
David Jourand

Avatar
David JOURAND
C'est toujours une très très mauvaise idées de faire des requêtes sur la
base depuis le client (l'applet). Mieux faire les requêtes au niveau du
serveur (JSP, PHP, au autre...) et d'échanger les résultats avec l'applet
sous une forme ou une autre.


De toute façon, votre applet risque de ne pas fonctionner en ligne... En
effet, sur quel port communique l'applet avec la base de données ?
Si le port est différent du port 80 ou 443 (et il l'est), l'applet ne
fonctionnera pas ! Les firewall interdisent dans leur très très grande
majorité les communications hors de ces deux ports.

D'autre part, cela veux dire que n'importe qui peux se connecter à la base
et faire ce qu'il veux avec...

Je le répète : Ne JAMAIS utiliser JDBC dans une APPLET !

--
David Jourand

Avatar
Nicolas
"David JOURAND" écrivait
news:41e0f728$0$25798$:


C'est toujours une très très mauvaise idées de faire des requêtes sur
la base depuis le client (l'applet). Mieux faire les requêtes au
niveau du serveur (JSP, PHP, au autre...) et d'échanger les résultats
avec l'applet sous une forme ou une autre.


De toute façon, votre applet risque de ne pas fonctionner en ligne...
En effet, sur quel port communique l'applet avec la base de données ?
Si le port est différent du port 80 ou 443 (et il l'est), l'applet ne
fonctionnera pas ! Les firewall interdisent dans leur très très grande
majorité les communications hors de ces deux ports.

D'autre part, cela veux dire que n'importe qui peux se connecter à la
base et faire ce qu'il veux avec...

Je le répète : Ne JAMAIS utiliser JDBC dans une APPLET !

--
Si je comprend bien, on pourrait décompiler le code et en déterminer les

pass ?
Relou ca, six mois foutus en l'air :(

David Jourand






Avatar
David JOURAND
Si je comprend bien, on pourrait décompiler le code et en déterminer les
pass ?


Effectivement... rien de plus simple.

Relou ca, six mois foutus en l'air :(


Celà depend de votre environnement côté serveur et de la qualité de votre
code (découpage en couche)...

--
David Jourand

Avatar
Nicolas
"David JOURAND" écrivait
news:41e18e7d$0$7093$:


Si je comprend bien, on pourrait décompiler le code et en déterminer
les pass ?


Effectivement... rien de plus simple.

Relou ca, six mois foutus en l'air :(


Celà depend de votre environnement côté serveur et de la qualité de
votre code (découpage en couche)...

--
Coté code, tout va bien, c'est très clean, par contre le serveur est

loué à 2$/mois à une société qui propose des serveurs php5 Je suppose
que pour un service payant satisfaisant, il me faudra passer à un
serveur personnel sur lequel j'installerai une servlet et le reste. Faut
que j'apprenne les servlets ou tout ce qui va autour...

David Jourand





Avatar
Symon
Oui, et de plus, les personnes qui sont derrière un serveur proxy ne
pourront pas forcément utiliser votre applet (il ne pourra pas se
connecter à la base de donnée sur n'importe quel port).

Les travaux pour intégrer une couche de communication coté serveur (type
xml généré par un servlet) ne devrait pas être trop lourd si l'accès aux
données est bien séparé du reste dans votre code.

Symon

Nicolas wrote:
"David JOURAND" écrivait
news:41e0f728$0$25798$:


C'est toujours une très très mauvaise idées de faire des requêtes sur
la base depuis le client (l'applet). Mieux faire les requêtes au
niveau du serveur (JSP, PHP, au autre...) et d'échanger les résultats
avec l'applet sous une forme ou une autre.


De toute façon, votre applet risque de ne pas fonctionner en ligne...
En effet, sur quel port communique l'applet avec la base de données ?
Si le port est différent du port 80 ou 443 (et il l'est), l'applet ne
fonctionnera pas ! Les firewall interdisent dans leur très très grande
majorité les communications hors de ces deux ports.

D'autre part, cela veux dire que n'importe qui peux se connecter à la
base et faire ce qu'il veux avec...

Je le répète : Ne JAMAIS utiliser JDBC dans une APPLET !

--


Si je comprend bien, on pourrait décompiler le code et en déterminer les
pass ?
Relou ca, six mois foutus en l'air :(


David Jourand