Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Errore Permission Applet

    Salve a tutti,

    sono nuovo della lista e avevpo una domanda per voi nella speranza che mi potete aiutare.

    Ho da diverso tempo un applet Java pilotato da un javascript con il quale vado a visualizzare delle immagini aprendo un socket con il Server remoto per la cattura delle imamgini, ha sempre funzionato sia con FireFox che con IE ma da quando ho aggiornato la VM alla versione 1.6.0_05 ho riscontrato un problema con Firefox che è il seguente:

    Exception in thread "Thread-10" java.security.AccessControlException: access denied (java.net.SocketPermission 192.168.233.128:80 connect,resolve)
    at java.security.AccessControlContext.checkPermission (Unknown Source)
    at java.security.AccessController.checkPermission(Unk nown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkConnect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at sun.net.NetworkClient.doConnect(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.http.HttpClient.<init>(Unknown Source)
    at sun.net.www.http.HttpClient.New(Unknown Source)
    at sun.net.www.http.HttpClient.New(Unknown Source)
    at sun.net.http://www.protocol.http.HttpURLConn...tNewHttpClient(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
    at sun.net.http://www.protocol.http.HttpURLConn...getInputStream(Unknown Source)
    at java.net.URL.openStream(Unknown Source)

    Da quanto ho capito è un problema di policy e se localmente mi creo un file in cui inserisco le regole giuste e modifico la console di java inserendo "-Djava.security.manager -Djava.security.policy=file:///c:\seppuku.policy" funziona il mio problema è che questo applet dovrà essere pubblicato su internet e non posso chiedere all'utente finale di modificare la propria configurazione

    Qualcuni mi può dare una mano?

    Vi ringrazio anticipatamente

    Maxi

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Credo che il problema stia sull'indirizzo IP utilizzato per la connessione: la JVM, probabilmente, si accorge che è un indirizzo di rete privato e lancia quella eccezione.

    Ora, non avendo nessuna riga di codice da vedere, non so come tu abbia impostato l'indirizzo IP a cui l'applet si dovrà collegare. Rimane il fatto che un'Applet può aprire connessioni solamente verso il server da cui viene scaricata. Quindi, nel caso di prove effettuate in locale, quell'indirizzo dovrebbe essere valido, ma forse è necessario cambiare il metodo di recupero di tale indirizzo.

    Questo è il metodo corretto per effettuare una connessione da un'Applet:
    codice:
    Socket s = new Socket(getCodeBase().getHost(), porta);
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    è un problema generale degli applet, non specifico della tua applicazione.
    Infatti ci sono in rete discussioni e analisi del problema, e anche parecchie lamentele.

    La descrizione e l'analisi più dettagliate che ho trovato sono su http://forum.java.sun.com/thread.jsp...rt=45&tstart=0

    Il problema si verifica solo su Firefox e solo se si usa il plugin java 1.6 e solo se l'applet viene scaricato da un server noto tramite nome DNS

    In tal caso, il nome DNS viene convertito in indirizzo IP poi viene fatta (non so per quale motivo) la risoluzione inversa dell'indirizzo IP, ottenendo (in alcuni casi) un altro nome DNS.

    E', per farti un esempio, il caso del dominio dell'azienda dove lavoro: il dominio è www.caribel.it
    . IL suo DNS è 62.123.230.130, mentre la risoluzione inversa è static-62-123-230-130.atlanet.it

    Se la risoluzione inversa dà un nome DNS _diverso_ da quello di partenza, l'applet riceve un'eccezione di sicurezza quando tenta di collegarsi al server da cui è stato scaricato, e la connessione non viene effettuata.

    Anche nel caso di applet esposte sul nostro dominio (www.caribel.it) queste hanno smesso di funzionare con firefox+Java 1.6!!

    Se sei in queste condizioni, al momento non c'è soluzione!!!
    O meglio: se qualcuno la trova mi faccia un fischio!!
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  4. #4
    OK grazie ora verifico,

    per quanto riguardo la mia implementazione io ho utilizzato

    InputStream is;
    URL fileUrl = new URL("http://192.168.233.128/ReadImg.jsp?IDR=00012");

    byte[] buf = new byte[132];
    try
    {
    is = url.openStream();
    // is = new FileInputStream(new URL(path));
    is.read(buf, 0, 132);
    is.close();
    System.gc();
    }
    catch (IOException e)
    {
    return UNKNOWN;
    }
    catch (URISyntaxException e)
    {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    Attualmente stò utilizzando un VMware con una macchina Virtuale con Debian 4 per fare le prove su multi piattaforma.

    Per verificare la tua teoria proverò a installare il tutto su un PC con indirizzo pubblico.

    Ma se fosse così mi rimane sempre un piccolo problema che è il seguente:

    quando andro a installare il programma dal mio cliente per quanto riguarda gli accessi dall'esterno non ci dovrebbero essere problemi il problema è con gli accessi dai client interni che vedranno il server con un indirizzo privato.

    Grazie ancora
    Maxi

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Fermo restando il problema sollevato da ivenuti, la dichiarazione dell'URL è comunque sbagliata: chi accederà dall'esterno riceverà sicuramente l'errore in quanto l'applet tenterà una connessione con il client stesso (se questo fa parte di una rete).

    Come ti ho suggerito, il modo corretto per effettuare una connessione è quello del mio post precedente. Dubito che in quel modo funzioni, anche nella Intranet.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Avevo un problema simile, che per un po' ho temuto fosse correlato a javascript o a errori java.
    Son felice di dire che con Firefox (attualmente ho provato con la versione 2.0.0.2) e l'ultima versione di Java (1.6.0_14) il problema si è risolto.
    All of the true things that I am about to tell you are shameless lies.
    (Bokonon Books)

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Originariamente inviato da JosaFat
    Avevo un problema simile, che per un po' ho temuto fosse correlato a javascript o a errori java.
    Son felice di dire che con Firefox (attualmente ho provato con la versione 2.0.0.2) e l'ultima versione di Java (1.6.0_14) il problema si è risolto.
    Tutto molto bello... ma hai notato che la discussione è dell'aprile 2008?
    Non risollevare discussioni oramai morte da tempo...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.