2011-05-23 5 views
3

Je travaille sur une page HTML qui utilise Javascript pour interagir avec une applet Java. La page HTML, les fichiers javascript et le fichier .jar de l'applet seront déployés localement dans un dossier du système de fichiers de l'utilisateur.Fichier .java.policy et applet locale

(Implémenter cela comme une application Java autonome n'est pas une option ici, pour diverses raisons, je ne vais pas expliquer ici).

L'applet doit effectuer des E/S de fichiers locaux. En tant que tel, je tente de tweek les paramètres dans le fichier .java.policy de l'utilisateur pour permettre cela.

J'ai trouvé la configuration suivante est la seule qui fonctionne:

grant 
{ 
    permission java.io.FilePermission "<<ALL FILES>>", "read"; 
    permission java.io.FilePermission "<<ALL FILES>>", "write"; 
}; 

Ce n'est pas idéal, car qu'il accorde toutes les autorisations applets pour lire écrire tous les fichiers. Naturellement je préférerais isoler à la base de code particulière. Cependant, je ne pouvais pas trouver une syntaxe "grant codeBase" qui fonctionne.

J'ai essayé:

grant codeBase "file:/C:/Files/FileIOApplet/-" { 
    permission java.io.FilePermission "<<ALL FILES>>", "read"; 
    permission java.io.FilePermission "<<ALL FILES>>", "write"; 
}; 

grant codeBase "file:///-" { 
    permission java.io.FilePermission "<<ALL FILES>>", "read"; 
    permission java.io.FilePermission "<<ALL FILES>>", "write"; 
}; 

grant codeBase "file:${user.home}/-" 
{ 
    permission java.io.FilePermission "<<ALL FILES>>", "read"; 
    permission java.io.FilePermission "<<ALL FILES>>", "write"; 
}; 

Ceci est en cours d'exécution en utilisant cette configuration:

  • Firefox 3.6.10
  • Java 1.6 mise à jour 25
  • Windows 7 64 bits

Où je vais je me trompe n configurer ce fichier .java.policy?

Je suis très rouillée dans le monde Java, en particulier en ce qui concerne les applets - votre expertise est donc appréciée!

Répondre

4

Pour connecter un Applet avec accès ici sont les paramètres de l'outil de la politique:

Aller à policytool, vous le trouvera dans le chemin suivant:

java->jdk1.3->bin->policyTool Application 

La fenêtre de l'outil de stratégie s'affiche.
Dans la fenêtre Outil de stratégie, sélectionnez le bouton "Ajouter une entrée de stratégie". Cela vous mènera à la fenêtre Entrée de politique

Entrez la CodeBase en tant que "fichier:/chemin de votre bin java". Par exemple

CodeBase file:/c:/java/jdk1.3/bin/ 

Maintenant, appuyez sur le bouton "Ajouter une autorisation" dans la fenêtre Entrée de stratégie.
Ceci vous mènera à la fenêtre "Autorisations"

Sélectionnez "Toutes les autorisations" dans la liste déroulante des autorisations.
Et cliquez sur "ok".

Maintenant, appuyez à nouveau sur le bouton "Ajouter autorisation" dans la fenêtre Entrée de politique.

Sélectionnez maintenant « Sélectionner « RuntimePermission » de l'autorisation déroulante zone de liste. maintenant dans la zone de liste déroulante Nom cible sélectionnez « accessClassInpackage », dans la zone de texte entrer accessClassInpackage.sun.jdbc.odbc

Maintenant cliquez sur « ok ».

maintenant, cliquez sur « fait » dans la fenêtre « Entrée politique ».

maintenant dans la fenêtre d'entrée Politique Fichier-> Enregistrer Enregistrer dans « bin » de votre installation de Java. Rappelez-vous le nom ... pour exemple dire .. appletpermission « sauver »

Maintenant vous avez un fichier de stratégie créé pour l'accès

maintenant pour compiler votre fichier java à l'invite de commande

javac programname.java 

Pour exécuter votre type de programme ce qui suit à l'invite cmd:

appletviewer -J-Djava.security.policy=appletpermission programname.java 

Maintenant tout est fait.