Java.security.policy + accès jdbc à un fichier excel ou access

jmf99 Messages postés 3 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 31 juillet 2004 - 15 juin 2004 à 18:26
jmf99 Messages postés 3 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 31 juillet 2004 - 16 juin 2004 à 14:32
Bonjour à toutes et à tous.

Dans le cadre de mes études (DESS Systèmes d'Information Multimédia), j'ai dû développer, en tant que débutant, une applet java. J'ai utilisé l'environnement Eclipse, et tout s'est bien passé. Sauf que lorsqu'on essaie de visualiser l'applet par un navigateur, j'obtiens le message suivant :

java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPackageAccess(Unknown Source)
at sun.applet.AppletSecurity.checkPackageAccess(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at T3Applet.createConnection(T3Applet.java:938)
at T3Applet.init(T3Applet.java:130)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Après avoir consulté ce forum et d'autres, j'ai essayé de signer l'applet (qui s'affiche mais n'arrive plus à accéder à la base de données), de modifier la java.policy.applet (avec

grant {
permission java.lang.RuntimePermission "accessClassInPackage.sun.jdbc.odbc";
permission java.util.PropertyPermission "file.encoding", "read";
permission java.security.AllPermission;
permission java.util.PropertyPermission "*", "read";
permission java.util.PropertyPermission "*", "write";
};

par exemple, mais j'ai essayé d'autres permissions, également).

Bizarrement, l'applet s'affiche parfaitement sous DOS (avec la commande

appletviewer -J-Djava.security.policy=java.policy.applet T3Applet.html)

sans que je n'aie besoin de modifier quoi que ce soit dans les sources de données systèmes ODBC (ce qu'on m'a conseillé aussi), et que la base soit sous excel ou sous access.

J'ai également essayé (à chaque fois, c'était un essai après l'autre, pas tout en même temps !) :-) de changer le niveau de sécurité directement dans la classe de l'applet

// chargement des permissions (properties)
Properties properties = new Properties();
properties.put("java.security.policy","./java.policy.applet");
System.setProperties(properties);

ou

// chargement des permissions (properties)
System.getProperties().put("java.security.policy","./java.policy.applet");

(avec import java.util.Properties; pour que Properties soit reconnue)

mais quoique j'essaie, il n'y a que l'appletviewer de dos ou l'appletviewer d'Eclipse qui exécutent correctement l'applet.

Je peux envoyer les fichiers sources aux bonnes âmes qui auraient une idée. L'idée est que l'applet fonctionne à partir de n'importe quel serveur web sans que l'utilisateur ait à modifier quoi que ce soit sur son sytème, mais si j'arrive déjà à la faire tourner sous un navigateur, quitte à modifier quelque chose en local, ce sera déjà un progrès par rapport à maintenant...

Merci d'avance pour votre attention et vos réponses.

Amicalement,
jmf99

2 réponses

wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
16 juin 2004 à 11:31
apparement il y a une erreur lors de la recuperation des classes necessaires a ton applet. Essai de faire un JAR ca devrait eliminer ce probleme.
0
jmf99 Messages postés 3 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 31 juillet 2004
16 juin 2004 à 14:32
> apparement il y a une erreur lors de la recuperation
> des classes necessaires a ton applet. Essai de faire un
> JAR ca devrait eliminer ce probleme.

(je rappelle que je suis un débutant) J'ai déjà essayé de créer un JAR lorsque j'ai voulu signer l'applet (http://java.sun.com/security/signExample12) mais l'applet s'affichait sans qu'il n'y ait plus de possibilité d'accès aux données. Si ce que tu me proposes, c'est de créer un jar sans signer l'applet, pourrais-tu être un peu plus explicite dans la manière de procéder s'il te plait ?

Merci d'avance.

Amicalement,
jmf99
0