OVH Cloud OVH Cloud

Applet et MySql

14 réponses
Avatar
jpeg_33
Bonjour à tous,

J'essaie d'accèder à une base de données MySql (en local) à partir
d'une applet et j'ai l'erreur suivante :
java.security.AccessControlException: access denied
(java.util.PropertyPermission file.encoding read)
J'ai cette erreur avec IE mais pas avec l'appletviewer. Je sais très
bien qu'une applet ne peut pas accéder à une autre machine que celle
où elle a été téléchargée, mais là j'ai tout en local (MySql, Apache).

Une solution ?

Merci.

10 réponses

1 2
Avatar
Nicolas Repiquet
"Alex" a écrit dans le message news:

Bonjour à tous,

J'essaie d'accèder à une base de données MySql (en local) à partir
d'une applet et j'ai l'erreur suivante :
java.security.AccessControlException: access denied
(java.util.PropertyPermission file.encoding read)
J'ai cette erreur avec IE mais pas avec l'appletviewer. Je sais très
bien qu'une applet ne peut pas accéder à une autre machine que celle
où elle a été téléchargée, mais là j'ai tout en local (MySql, Apache).

Une solution ?


Tu est sur de spécifier la même interface ? la même url ?

Par exemple si tu écrit http://127.0.0.1/ et que ta connexion essaye
d'atteindre "localhost" je pense que ça ne marchera pas et inversement.
Pareil si tu n'est pas sur la même interface, du genre 192.168.0.1 ( réseau
local ) & 127.0.0.1 ( local interface ).

Merci.


Avatar
Armel HERVE
In article , jpeg_33
@yahoo.fr says...
Bonjour à tous,

J'essaie d'accèder à une base de données MySql (en local) à parti r
d'une applet et j'ai l'erreur suivante :
java.security.AccessControlException: access denied
(java.util.PropertyPermission file.encoding read)
J'ai cette erreur avec IE mais pas avec l'appletviewer. Je sais très
bien qu'une applet ne peut pas accéder à une autre machine que celle
où elle a été téléchargée, mais là j'ai tout en local (MySq l, Apache).

Une solution ?

Merci.

As-tu essayer, comme adresse pour la Bdd à partir de ton applet la

méthode de la classe Applet getCodeBase().toString() ?
Ca te donne le serveur qui a servi à télécharger ton applet et c'est le
seul serveur auquel peut se connecter une applet non signée.

Armel

Avatar
jerome moliere
Alex wrote:
Bonjour à tous,

J'essaie d'accèder à une base de données MySql (en local) à partir
d'une applet et j'ai l'erreur suivante :
java.security.AccessControlException: access denied
(java.util.PropertyPermission file.encoding read)
J'ai cette erreur avec IE mais pas avec l'appletviewer. Je sais très
bien qu'une applet ne peut pas accéder à une autre machine que celle
où elle a été téléchargée, mais là j'ai tout en local (MySql, Apache).

Une solution ?
non des pistes :)

quel est le type de ton driver ? pour mémoire, seuls les drivers type II
et IV sont manipulables depuis une applet...
as tu pensé à mettre en place une architecture un peu moins obsolète que
le bon vieux 2 couches et tous les problèmes qu'il a causé ?
Jerome

Avatar
Alex
J'ai essayé suivant vos conseils mais ça ne change rien j'ai toujours le
même problème.
Si je remplace 127.0.0.1 par getCodeBase().toString() (comme me le suggérait
Armel) dans la chaîne de connexion à la base de données j'ai l'erreur "No
suitable driver" avec l'appletviewer

Voici le code que j'utilise, si vous voyez un truc de louche, n'hésitez pas
à me le dire ;-)

import java.awt.*;
import java.applet.*;
import java.sql.*;

public class SimpleApplet extends Applet
{
public void paint(Graphics g)
{

// Chargement du driver JDBC
try
{
g.drawString("debut", 20, 20);
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
g.drawString("fin", 20, 35);
}
catch (Exception e)
{
g.drawString("Chargement du pilote impossible", 20, 35);
}

// Etablissement de la connexion
try
{

Connection connexion = DriverManager.getConnection
("jdbc:mysql://127.0.0.1/test","root","");


g.drawString("La connexion fonctionne parfaitement", 20, 50);

connexion.close();
}
catch(SQLException e)
{
g.drawString("***** SQLException : *****", 20, 55);
while (e != null)
{
g.drawString("Message : " + e.getMessage (), 20, 70);
g.drawString("Etat : " + e.getSQLState (), 20, 100);
g.drawString("Code Erreur : " + e.getErrorCode (), 20, 115);
e = e.getNextException();
}
}
}
}


"Alex" a écrit dans le message de
news:
Bonjour à tous,

J'essaie d'accèder à une base de données MySql (en local) à partir
d'une applet et j'ai l'erreur suivante :
java.security.AccessControlException: access denied
(java.util.PropertyPermission file.encoding read)
J'ai cette erreur avec IE mais pas avec l'appletviewer. Je sais très
bien qu'une applet ne peut pas accéder à une autre machine que celle
où elle a été téléchargée, mais là j'ai tout en local (MySql, Apache).

Une solution ?

Merci.


Avatar
Alex
quel est le type de ton driver ? pour mémoire, seuls les drivers type II
et IV sont manipulables depuis une applet...
as tu pensé à mettre en place une architecture un peu moins obsolète que
le bon vieux 2 couches et tous les problèmes qu'il a causé ?
Jerome

Le driver utilisé est org.gjt.mm.mysql.Driver. En ce qui concerne son type

(II ou IV) j'en ai aucune idée, regarde mon autre post j'y ai mis les source
de mon applet.
Non j'ai pas essayé une autre architecture, je sais bien qu'on peut passer
par une servlet mais ça demande une configuration du serveur un peu
particulière. Je cherche juste un exemple simple d'accès à une base de
données avec une applet.

Avatar
Libert Sébastien
Si je remplace 127.0.0.1 par getCodeBase().toString() (comme me le
suggérait

Armel) dans la chaîne de connexion à la base de données j'ai l'erreur "No
suitable driver" avec l'appletviewer


As-tu déclaré le fichier jar du driver JDBC dans le code de ta page ?




HTH
Sébastien Libert

Avatar
Alex
As-tu déclaré le fichier jar du driver JDBC dans le code de ta page ?




Voici ce que j'ai dans la page html :
<applet archive="mysql-connector-java-3.0.8-stable-bin.jar"
code="SimpleApplet" width00 height 0></applet>

Avatar
Libert Sébastien
"Alex" a écrit dans le message de news:
3f81a336$0$28892$

As-tu déclaré le fichier jar du driver JDBC dans le code de ta page ?




Voici ce que j'ai dans la page html :
<applet archive="mysql-connector-java-3.0.8-stable-bin.jar"
code="SimpleApplet" width00 height 0></applet>



Essaye de modifier ton code avec la ligne suivante :

/* Class.forName("org.gjt.mm.mysql.Driver").newInstance(); */
Class.forName("com.mysql.jdbc.Driver").newInstance();


Avatar
Alex

Essaye de modifier ton code avec la ligne suivante :

/* Class.forName("org.gjt.mm.mysql.Driver").newInstance(); */
Class.forName("com.mysql.jdbc.Driver").newInstance();



Non c'est pareil, par contre dès que je remets DriverManager.getConnection
("jdbc:mysql://127.0.0.1/test","root",""); à la place de
DriverManager.getConnection ("jdbc:mysql:" + getCodeBase().toString() +
"test","root",""); là ça marche dans les deux cas (c'est à dire si je mets
com.mysql.jdbc.Driver ou org.gjt.mm.mysql.Driver)

Avatar
Erwan David
"Alex" écrivait :


Essaye de modifier ton code avec la ligne suivante :

/* Class.forName("org.gjt.mm.mysql.Driver").newInstance(); */
Class.forName("com.mysql.jdbc.Driver").newInstance();



Non c'est pareil, par contre dès que je remets DriverManager.getConnection
("jdbc:mysql://127.0.0.1/test","root",""); à la place de
DriverManager.getConnection ("jdbc:mysql:" + getCodeBase().toString() +
"test","root",""); là ça marche dans les deux cas (c'est à dire si je mets
com.mysql.jdbc.Driver ou org.gjt.mm.mysql.Driver)


T'as regardé ce que donnait exactement le getCodeBase().toString() ?
Est-ce que par hasrad il ne manquerait pas un "/" à la fin ?


1 2