Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    38

    [JAVA] Errore funzionamento applet: Exception in thread "AWT-EventQueue-2"

    L'errore completo è
    Exception in thread "AWT-EventQueue-2" java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc)
    Mi capita quando tento da un'applet d'inserire dei dati in un database.
    Sapete come posso aggirarlo?

    Grazie
    @

  2. #2
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    direi sia un errore di sicurezza, firma l'applet(cercando nel forum trovi come) o modifica il file JAVA_HOME/jre/lib/security/java.policy (NOTA: il file di tutti i client deve avere la modifica), come modifica prova a dargli direttamente tutto:

    codice:
    grant codeBase "http://www.dovelapplet.com/-" {
    java.security.AllPermission;
    };
    se sta in un file locale ad es.:

    codice:
    grant codeBase "file:/home/netarrow/java/progetti/-" {
    java.security.AllPermission;
    };
    sulla Doc della Sun trovi più info su come fare.

    Cmq se l'applet deve stare in rete ti conviene firmarla in modo che venga un messaggio all'utente che gli chieda se accordare permessi extra o meno.

    Se il problema è un altro non saprei aiutarti visto che non so usare i database.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    38
    Il problema è che essendo un privato, non saprei come creare una firma (immagino digitale)...
    Proverò con la modifica sulla policy.
    Grazie mille...

  4. #4
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    anche se sei privato la firma funziona, anche se non sei nessuno la firma funziona, solo che viene scritto "il certificato non è autenticato e non è ritenuto sicuro" o cosa simile, se c'è un'impresa dietro c'è anche il suo visto.

    Qui hai una guida su come firmare: http://www.mokabyte.it/1999/11/signedapplet.htm

    Cmq come fai per il policy? Avverti il client che cosa deve modificare? Gli dai un secondo programma apposito? Se lo fai fare all'applet ricadi nuovamente in violazione di sicurezza visto che ai file del client non puoi accedere.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    38
    relativamente alla policy:


    grant {
    permission java.security.AllPermission;
    };


    Questo è il contenuto dei file java.policy.applet contenuti nella cartella di default dell'applet, quindi in teoria dovrebbe andare...
    Fatto sta che non va...

  6. #6
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    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.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.