Bonjour,
Je vais encore sortir un problème récurrent mais je n'ai pas trouvé de solution qui a fonctionné pour moi à l'heure actuelle. Mon applet se connecte à une base Oracle pour récupérer et afficher des informations. Sur l'applet viewer, j'ai tous les droits et permissions nécessaires, donc la connexion se passe bien. Sur un navigateur, l'exception suivante se lève :
Ce qui est normal car les applets sont "enfermés" dans la sandbox. J'ai vu qu'il y avait plusieurs solutions : modifier le fichier policy, signer l'applet ou créer une servlet qui se chargerait de la connexion. Je précise que c'est un projet pour une entreprise cliente, pas un projet personnel, donc je ne peux pas tout me permettre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 java.security.AccessControlException: access denied (java.util.PropertyPermission oracle.jserver.version read) 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.checkPropertyAccess(Unknown Source) at java.lang.System.getProperty(Unknown Source) at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:433) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at ResteAFaire.start(ResteAFaire.java:69) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source)Pour la servlet ce n'est pas possible, on n'a pas prévu dans le contrat de faire installer Tomcat. Pour le fichier policy, il faut le changer sur toutes les machines d'après ce que j'ai compris, pas faisable non plus. J'ai donc décidé de signer l'applet. Alors l'applet est effectivement signée, mais malgré cela, même lorsque j'ai cliqué sur exécuter, la même exception se lève !
J'ai découvert ensuite Java Web Start. Les contraintes sont les mêmes que pour les applets, à savoir que la sandbox limite les accès aux ressources. J'ai donc modifié (très rapidement, la conversion était super simple, faite en quelques minutes) mon applet pour la transformer en application. J'ai donc créé mon fichier JNLP, j'ai signé l'application pour lui donner les permissions requises et ça marche !!! Alors que pour l'applet ça ne marche pas, je ne comprends pas, pourtant les limitations sont les mêmes ! Je ne comprends pas. Mon chef voudrait plutôt que le programme soit une applet, donc je suis un peu coincé.
Quelqu'un saurait-il d'où vient mon problème ? Avez vous besoin que je poste du code ?
Merci d'avance pour votre aide !
PS : Lors de la création du fichier JNLP, je n'ai pas utilisé le protocole HTTP pour accéder à mon fichier jar mais le protocole FILE, je sais que d'habitude il faut toujours faire suivre le nom du protocole par "://" mais pour file, il fallait rajouter un troisième slash, ce que je ne savais pas et qui m'a fait perdre un temps fou à chercher d'où venait l'erreur. Quelqu'un pourrait m'expliquer pourquoi il fallait 3 slashes au lieu de 2 ? Cette question est juste pour ma culture personnelle, mon problème ci-dessus est prioritaire
Bonne journée à tous !
Partager