2010-04-10 14 views
9

Estoy trabajando en un proyecto de inteligencia artificial que es un juego lógico y tiene como objetivo que dos usuarios se conecten al servidor de la red que actúa como administrador y luego comienzan a jugar uno por uno.Dónde colocar el archivo de política de java applet?

Para crear conexiones, tengo un código de servidor que solo escucha en localhost: 8000 y asigna valores de equipo a los clientes a medida que llegan. Después de conectarse, los clientes hacen su movimiento bajo el control de Admin.

La cuestión es que cuando intento poner mi código para trabajar en el navegador falla con el siguiente error:

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

A pesar de que he creado mi propia política, la concesión de un principio sólo zócalo permiso de acceso a el código base de mi carpeta de proyecto (file:///home/xxx/projects/-), después de que no funcionó, otorgué todos los permisos de todos codebase. Traté de colocar mi archivo de política tanto en el directorio de inicio como en el mismo directorio donde reside el código de mi applet.

Apreciar cualquier consejo, gracias.

+0

Cuando intento ejecutar mi código de cliente después de iniciar el servidor desde la consola de la siguiente manera, puedo reconocer mi propio archivo de política que reside en mi directorio personal: appletviewer -J-Djava.security.policy = mypolicy.policy file: ///home/xxx/NetBeansProjects/project/src/index.html Pero cuando intento ejecutar desde IDE, falla: s – makdere

+0

firmando el/los archivo (s) del applet puede ser un poco más fácil de administrar. Le ahorra tener que instalar un archivo de política en cada cuadro en el que desea que se ejecute. – objects

Respuesta

11

por defecto creo que se ve un archivo llamado .java.policy en su casa directorio

puede consultar el archivo /lib/security/java.security para ver dónde se ve. compruebe las claves denominadas policy.url.n

+1

Cambiar el nombre de mi propio archivo de política creado a .java.policy después de comprobar /lib/security/java.security para averiguar dónde busca java el archivo de política, funcionó. Gracias every1 por los consejos. – makdere

+0

si se resuelve su problema, por favor haga clic en la marca al lado del comentario (a la izquierda) que le ayudó. – objects

+0

gracias amigo, me alegro de que te ayudó – objects

0

Coloque el archivo de política donde se encuentra el JRE.

Por ejemplo, mi archivo de política se encuentra en C: \ Archivos de programa \ Java \ jre1.6.0_01 \ lib \ security

0

Sugiero respetar la política del mismo origen. Las implicaciones de seguridad no son necesariamente obvias en el mejor de los casos. Además, un applet con permisos estándar tiene una mejor usabilidad y debería ser más fácil de mantener.

0

Si otorga un permiso a un JAR específico (base de código), esto solo funciona si toda la pila de ejecución desde el inicio del hilo hasta la invocación del método está en ese dominio de base de código/protección.

Si su método es una biblioteca, y está seguro de que accede a la operación de manera segura, puede usar un Bloque priveledged, que esencialmente asegura que la parte de la pila que llama a su bloque no se considera en el cálculo de acceso.

privilegiado bloque, tal como se describe aquí:

http://docs.oracle.com/javase/6/docs/technotes/guides/security/doprivileged.html

Saludos Bernd

2

Puede establecer la ubicación del archivo de política de seguridad mediante el uso de esta opción de línea de comandos

-Djava.security.policy=policyfilepath 

con el comando java.

O incluso puede establecer esta propiedad utilizando el procedimiento System.setProperty().

+0

¿Cómo se aplica esto a un applet? Además, dudo que sea efectiva la configuración de la propiedad del sistema después de que la JVM ya haya comenzado. – davmac

Cuestiones relacionadas