attento, se hai un policy nella cartella dell'applet devi usare appletviewer e impostare quel file di policy per avere tutti i permessi, se l'applet viene aperta da un browser la JVM usa il java.policy che sta in JAVA_HOME/jre/lib/security(ad esempio su windows di default sta in C:\jdk1.5.0_03\jre\lib\security, poi dipende da dove installi il jdk).
Se vuoi che la tua JVM dia a tutto tutti i permessi metti
codice:
grant {
permission java.security.AllPermission;
};
ma è naturalmente sconsigliato.
Un policy di default solitamente ha:
codice:
// Standard extensions get all permissions by default
grant codeBase "file:${{java.ext.dirs}}/*" {
permission java.security.AllPermission;
};
// default permissions granted to all domains
grant {
// Allows any thread to stop itself using the java.lang.Thread.stop()
// method that takes no argument.
// Note that this permission is granted by default only to remain
// backwards compatible.
// It is strongly recommended that you either remove this permission
// from this policy file or further restrict it to code sources
// that you specify, because Thread.stop() is potentially unsafe.
// See "http://java.sun.com/notes" for more information.
permission java.lang.RuntimePermission "stopThread";
// allows anyone to listen on un-privileged ports
permission java.net.SocketPermission "localhost:1024-", "listen";
// "standard" properies that can be read by anyone
permission java.util.PropertyPermission "java.version", "read";
permission java.util.PropertyPermission "java.vendor", "read";
permission java.util.PropertyPermission "java.vendor.url", "read";
permission java.util.PropertyPermission "java.class.version", "read";
permission java.util.PropertyPermission "os.name", "read";
permission java.util.PropertyPermission "os.version", "read";
permission java.util.PropertyPermission "os.arch", "read";
permission java.util.PropertyPermission "file.separator", "read";
permission java.util.PropertyPermission "path.separator", "read";
permission java.util.PropertyPermission "line.separator", "read";
permission java.util.PropertyPermission "java.specification.version", "read";
permission java.util.PropertyPermission "java.specification.vendor", "read";
permission java.util.PropertyPermission "java.specification.name", "read";
permission java.util.PropertyPermission "java.vm.specification.version", "read";
permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
permission java.util.PropertyPermission "java.vm.specification.name", "read";
permission java.util.PropertyPermission "java.vm.version", "read";
permission java.util.PropertyPermission "java.vm.vendor", "read";
permission java.util.PropertyPermission "java.vm.name", "read";
};
Quindi da tutti i permessi al codice cha sta in ext, quelli sotto a tutto il resto(il secondo grant non ha parametri aggiuntivi quindi va ad esclusione dei precedenti).
Infatti io che ho disinstallato il JCE di Sun(quindi la firma non funziona) vado a modificare di volta in volta il file policy, ma un utente medio che deve solo usare l'applet e non programmare può trovare scomodo il dover modificare, dire "sì" alla domanda è meglio.
Quindi ti conviene provare la firma, se cerchi nel forum trovi un riassunto di quella guida che in realtà serve solo a metà(basta firmare il Jar, funziona anche senza il certificato).
Questo vale per le applet, di default le applicazioni standalone non hanno nessun verify del bytecode e possono fare praticamente tutto.