[info] Architecture 3-tiers
Bonjour,
(pour ceux qui prenne le sujet en cours allé direct au post 5 voir 6)
J'ai un probleme de connexion à une base MySQL dans une applet,
je m'explique, lorsque je tester mon applet en local,je fais pour la connexion:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
private String pilote = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://127.0.0.1:3306/ma_bdd";
public void connect( String log, String pass)
{
try
{
Class.forName(pilote);
conn = DriverManager.getConnection(url,"root","");
stmt = conn.createStatement();
}
catch ( SQLException E)
{
JOptionPane.showMessageDialog(null,E);
}
catch ( ClassNotFoundException E)
{
JOptionPane.showMessageDialog(null,E);
}
} |
là tous fonctionne correctement, la connexion est réussit et je peut travailler sur ma bdd.
Mais lorsque je remplace 127.0.0.1 par mon adresse IP (140.170.0.24 par exemple) pour accceder à ma base d'un autre poste, la connexion ne marche pas.
De plus, d'un autre poste aucune exception n'est levée, par contre si je teste cette méthode sur ma machine, une SQLException est levée:
Code:
1 2
|
java.net.SocketException:java.security.AccessControlException: access denied (java.net.SocketPermission 140.170.0.24:3306 connect,resolve) |
De l'aide SVP :cry:
différence Applet / Servlet
Ok, ton soucis vient de la différence entre servlet et applet...
Une applet, c'est un code téléchargé au niveau du poste client, et qui est éxécuté sur le poste client... De cette manière, si tu dois inclure une connexion BD dessus, avec login et mot de passe, tu es obligé de lancer ta connexion a partir de ton applet, ce qui veut dire que ces paramètres sont chargés sur le poste du client, bref, une porte ouverte a tout pour tout le monde. Raison pour laquelle ce n'est :
1 - pas sécurisé
2 - pas conseillé
3 - interdit via Internet
Une servlet, par contre, est lancé sur le serveur directement, le client ne fais que lui passer ses paramètres. (Notamment, les critères de recherche pour monter ta requête) A ce niveau là, les paramètres de connexion, login et mot de passe, ne sont jamais envoyé aux clients, ils sont utilisé par ta servlet, sur le serveur lui même.
Le client peut simplement se retrouver avec une page HTML toute bete pour faire ses recherches.
En gros, ton applet en elle meme peut rester pratiquement tel quel, par contre, c'est au niveau de ta servlet que tu vas générer les flux HTTP (c'est elle qui fait le boulot, en fait, c'est elle qui se connecte à la base de donnée, c'est elle qui récupère les résultats de la requête, et c'est elle qui les envoie par la suite au poste client.)
En résumé, l'applet est éxécutée coté client, la servlet coté serveur. Tu peux considérer que la servlet est une applet éxécutée coté serveur.