2010-04-10 18 views
9

Sto lavorando a un progetto di intelligenza artificiale che è un gioco di logica e mira a due utenti che si connettono al server della rete che funge da amministratore e quindi inizia a giocare uno alla volta.Dove posizionare il file dei criteri dell'applet java?

Per creare connessioni, ho un codice server che è in ascolto su localhost: 8000 e che assegna i valori del team ai client non appena arrivano. Dopo la connessione, i clienti passano sotto il controllo dell'amministratore.

La questione è che quando provo a mettere il mio codice per lavorare nel browser non riesce con il seguente errore:

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

Anche se ho creato la mia propria politica, in primo luogo concedere solo l'autorizzazione di accesso Socket a il codebase della mia cartella di progetto (file:///home/xxx/projects/-), dopo che non ha funzionato ho concesso tutte le autorizzazioni da tutte codebase. Ho provato a posizionare il mio file di criteri sia nella directory home che nella stessa directory in cui risiede il codice dell'applet.

Apprezzare qualsiasi suggerimento, grazie.

+0

Quando provo a eseguire il mio codice client dopo aver avviato il server dalla console come segue, sono in grado di riconoscere il mio file di criteri che risiede nella mia home directory: appletviewer -J-Djava.security.policy = mypolicy.policy file: ///home/xxx/NetBeansProjects/project/src/index.html Ma quando provo a lanciare da IDE, fallisce: s – makdere

+0

firmare i jar dell'applet potrebbe essere un po 'più facile da gestire. Salva la necessità di installare un file di criteri in ogni casella in cui desideri che venga eseguito. – objects

risposta

11

di default penso che cerca un file chiamato .java.policy nella vostra casa directory

è possibile controllare il file /lib/security/java.security per vedere dove appare. controllare le chiavi denominate policy.url.n

+1

Rinominare il mio file di politica creato in .java.policy dopo aver controllato /lib/security/java.security per scoprire dove cerca il file di criteri, ha funzionato. Grazie a tutti per i suggerimenti. – makdere

+0

se il problema è risolto, fai clic sul segno di spunta accanto al commento (a sinistra) che ti ha aiutato. – objects

+0

grazie amico, felice che ti abbia aiutato – objects

0

Inserire il file della politica in cui si trova JRE.

Per esempio, il mio file di criteri si trova in C: \ Program Files \ Java \ jre1.6.0_01 \ lib \ security

0

Consiglio vivamente di rispettare la politica della stessa origine. Le implicazioni sulla sicurezza non sono necessariamente ovvie nel migliore dei casi. Inoltre, un'applet con permessi standard ha una migliore usabilità e dovrebbe essere più facile da mantenere.

0

Se si concede un'autorizzazione a un JAR specifico (base di codici), questo funziona solo se l'intero stack di esecuzione dall'inizio del thread alla chiamata del metodo si trova in quel dominio di base/dominio di protezione.

Se il metodo è alibrary, e siete sicuri che si accede al funzionamento in sicurezza, è possibile utilizzare un priveledged Block, che rende in sostanza che la parte dello stack di richiedere l'intervento del blocco non è considerato nel calcolo di accesso.

privilegiato blocco, come descritto qui:

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

Saluti Bernd

2

È possibile impostare il percorso del file di criteri di protezione utilizzando questa opzione della riga di comando

-Djava.security.policy=policyfilepath 

con il comando java.

Oppure è possibile impostarlo anche utilizzando la procedura System.setProperty().

+0

Come è applicabile a un'applet? Inoltre, dubito che l'impostazione della proprietà di sistema dopo l'avvio della JVM sia effettiva. – davmac

Problemi correlati