9
votes

Où placer le fichier de stratégie d'applet Java?

Je travaille sur un projet d'intelligence artificielle qui est un jeu logique et vise deux utilisateur qui se connecte au serveur sur le réseau qui agit comme administrateur, puis commence à jouer un par un.

afin de créer des connexions, J'ai un code de serveur qui vient d'écouter sur localhost: 8000 et d'attribuer des valeurs d'équipe aux clients tels qu'ils arrivent. Après la connexion, les clients font leur déménagement sous le contrôle de l'administrateur. P>

La question est que lorsque j'essaie de mettre mon code pour travailler dans le navigateur, il échoue avec l'erreur suivante: P>

java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:8000 connect,resolve)


2 commentaires

Lorsque j'essaie d'exécuter mon code client après avoir commencé le serveur de la console comme suit, je suis en mesure de faire reconnaître mon propre fichier de stratégie qui réside dans mon annuaire de domestique: AppetViewer -J-djava.security.policy = mypolicy.policy File: / //home/xxx/netbeansprojects/project/src/index.html Mais quand j'essaie de courir de l'IDE, il échoue: s


La signature du (s) pot d'applet peut être un peu plus facile à gérer. Vous permet d'économiser d'installer un fichier de stratégie sur chaque case que vous souhaitez exécuter.


5 Réponses :


0
votes

Placez le fichier de stratégie où le JRE est.

Par exemple, mon fichier de stratégie est situé à C: \ Program Files \ Java \ jre1.6.0_01 \ lib \ Security


0 commentaires

11
votes

Par défaut, je pense qu'il recherche un fichier nommé .java.policy dans votre annuaire de domicile

Vous pouvez vérifier le fichier /lib/security/java.security pour voir où il ressemble. Vérifiez les clés nommées stratégie.L.n


4 commentaires

Renommer mon propre fichier de stratégie créé à .java.policy après avoir vérifié /lib/security/java.security afin de savoir où Java recherche le fichier de stratégie, cela a fonctionné. Merci toutes les1 pour les astuces.


Si votre problème est résolu, veuillez cliquer sur la case à côté du commentaire (à gauche) qui vous a aidé.


Quel est l'équivalent Windows de ce chemin /lib/security/java.security ?


Recherchez dans le répertoire où le JRE est installé, généralement dans les fichiers de programme



0
votes

Je suggère fortement de respecter la même politique d'origine. Les implications de sécurité ne sont pas nécessairement évidentes au mieux de fois. En outre, une applet avec des autorisations standard a une meilleure convivialité et devrait être plus facile à maintenir.


0 commentaires

0
votes

Si vous accordez une autorisation à un pot spécifique (codeBase), cela ne fonctionne que si l'ensemble de la pile d'exécution du début du thread à l'invocation de la méthode est dans ce domaine de codeBase / Protection.

Si votre méthode est de l'alibration et que vous êtes sûr que vous accédez à l'opération en toute sécurité, vous pouvez utiliser un bloc privilégié, ce qui permet essentiellement que la partie de la pile appelant votre bloc n'est pas prise en compte dans le calcul d'accès.

bloc privilégié, comme décrit ici:

http://docs.oracle.com/ Javase / 6 / Documents / Technotes / Guides / Sécurité / Dopriviled.html

Salutations Bernd


0 commentaires

3
votes

Vous pouvez définir l'emplacement du fichier de stratégie de sécurité à l'aide de cette option de ligne de commande xxx

avec la commande java .

ou vous pouvez même définir cette propice à l'aide de la procédure system.setproperty () .


1 commentaires

Comment est-ce applicable à une applet? En outre, je doute que définir la propriété du système après que le JVM ait déjà commencé est efficace.