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

    [JAVA refresh pagina web tramite Applet e Socket]

    ciao ragazzi,

    sto cercando di fare un meccanismo di refresh di una pagina web nel seguente modo:

    La pagina web "index.html" contiene una applet Java che rimane in ascolto su un socket (multicast) ed aspetta che le arrivi un messaggio. Quando il messaggio arriva, la applet fa il refresh della pagina web "index.html" tramite il comando:

    "getAppletContext().showDocument(getDocumentBase() );"


    Per la cronaca, il messaggio(che la applet aspetta) è inviato(tramite socket) alla applet tramite una classe java avviata dal prompt.

    Se testo la applet tramite il comando "appletviewer index.html"(dal prompt)vedo che la comunicazione funziona e il messaggio arriva (perche lo vedo tramite dai System.out.println(...) piazzati prima e dopo il comando di refresh all'interno del codice della applet, anche se non posso vedere se funziona il di refresh, perche per vederlo devo far girare la pagina sul browser).
    Invece se faccio girare la applet sul browser vedo che il refresh non funziona ( in questo caso le stampe dai System.out.println(...) non posso utilizzarle per vedere se arriva il messaggio perche sul browser non vengono stampate come è giusto che sia).


    Vorrei che il refresh sul browser funzionasse.
    Forse è una questione di focus della applet che non rimane attiva mentre invio i messaggi dal prompt..
    Tralaltro ho provato a mettere il codice dentro il metodo "init()" o nel metodo "start()" della applet ma non cambiano le cose.

    Sapete risolvere questa cosa?

    Vi posto il codice dell'applet:



    codice:
    public class ClassApplet extends Applet{
    	
    	
    	
    
    public void init()  {
    	super.init();
    	
    		
    	//getAppletContext().showDocument(url);
    	//System.out.println("reindirizzamento"); 
    	
    	try {	
    		socket = new MulticastSocket(5009);
    		}	
    		catch (IOException e) {			
    			e.printStackTrace();	
    		}
    	
    	try {
    	
    		System.out.println("Eseguito public void start()");
    		
    		InetAddress group = InetAddress.getByName("230.0.0.9");
    		System.out.println("Eseguito inet");
    		
    		socket.joinGroup(group);
    		System.out.println("joingroup");
    		
    		byte[] buf = new byte[255];
    		DatagramPacket packet;
    		System.out.println("datagram");
    		packet = new DatagramPacket(buf, buf.length);  
    	
    		while(true) {
    			
    			
    			System.out.println("");
    			System.out.println("");
    			System.out.println("while");
    			System.out.println("Attesa dal server");
    
                            //ricezione dati dal socket
    			socket.receive(packet);  
    
                            //conversione dei dati in stringa
    			String received = new String(packet.getData()); //
    			String messaggio = received.substring(0,3);
    		
    			
    			if(messaggio.equals("ref")) {
    				System.out.println("ref ricevuto");
    
                                    //istruzione di refresh della pagina
    				getAppletContext().showDocument(getDocumentBase()); 
    				
    			}
    		}
    		
    	} 
    
    	catch (Exception e) {
    			
    			e.printStackTrace();
    			socket.close();
    			
    		}
    		
    	
      }
    
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA refresh pagina web tramite Applet e Socket]

    Originariamente inviato da soundsgood
    le stampe dai System.out.println(...) non posso utilizzarle per vedere se arriva il messaggio perche sul browser non vengono stampate come è giusto che sia).
    Le vedi dalla "console" Java.

    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ti ringrazio per la dritta..

    ok ho capito il problema. Dalla console Java vedo il seguente messaggio:

    java.security.AccessControlException: access denied (java.net.SocketPermission 230.0.0.9 connect,accept,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.checkMulticast(Unknown Source)
    at java.net.MulticastSocket.joinGroup(Unknown Source)
    at ClassApplet.init(ClassApplet.java:61)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionR unnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)


    questo messaggio me lo dava anche quando eseguivo la applet tramite il comando "appletviewer index.html" sul prompt e riguarda la segnatura delle applet, attraverso la quale esse ottengono i permessi per fare determinate azioni.
    Dopo aver inutilmente seguito una guida per fare questa segnatura.. sono riuscito ad aggirare il problema e sbloccare i permessi in un altro modo, modificando il file "java.policy" che sta dentro "...\jdk1.6.0_18\jre\lib\security\java.policy" aggiungendo il seguente codice:

    codice:
    grant { permission java.security.AllPermission; };
    che dovrebbe sbloccare tutti i permessi e funziona (sul prompt tramite appletviewer).

    Adesso facendo girare la applet sul browser attraverso la pagina "index.html" rida di nuovo questo errore apparso sulla console java

    Sapete come fare?

    secondo me bisogna aggiungere qualche riga dentro il "grant" al file java.policy del tipo

    "permission java.net.SocketPermission "230.0.0.9:*", "connect,accept,resolve";"

  4. #4
    risolto.. per sbloccare i permessi per la applet e socket che girano sul browser bisogna modificare il file java.policy anche in ...\Program Files\Java\jre6\lib\security ed aggiungere

    codice:
    grant { permission java.security.AllPermission; };
    Certo sarebbe comodo mettere un grant piu restrittivo, lovvero che da pieni permessi solo alle pagine web che girano su localhost.. qualcuno conosce l'istruzione?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da soundsgood
    risolto.. per sbloccare i permessi per la applet e socket che girano sul browser bisogna modificare il file java.policy anche in ...\Program Files\Java\jre6\lib\security
    Precisiamo: il file di policy può stare in diverse locazioni. Dipende se "system-wide" o "per-user".

    E' tutto spiegato qui:
    http://java.sun.com/javase/6/docs/te...ml#DefaultLocs

    Originariamente inviato da soundsgood
    codice:
    grant { permission java.security.AllPermission; };
    Questo dà tutti i privilegi a qualunque applet da qualunque provenienza (anche da qualunque sito web). Pertanto è potenzialmente pericolosissimo.

    E la questione del codeBase è spiegata a partire da qui:
    http://java.sun.com/javase/6/docs/te...tml#FileSyntax
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    sto cercando una istruzione meno permissiva ma non riesco a far funzionare niente ..

    in pratica ho una pagina jsp che contiene un applet java che si mette in ascolto su un socket multicast (usa udp) . tutto il codice è su localhost

    che istruzione mi consigliate?

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da soundsgood
    sto cercando una istruzione meno permissiva ma non riesco a far funzionare niente ..

    in pratica ho una pagina jsp che contiene un applet java che si mette in ascolto su un socket multicast (usa udp) . tutto il codice è su localhost
    Meno permissiva .... cosa intendi? Che i permessi vengano dati solo alla tua applet? Imposta il codeBase nel grant. Ed è tutto spiegato nella documentazione già linkata prima.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    si solo alla applet.. oppure a tutto il codice preso da localhost.. guarda ci ho provato ma non funziona, appunto chiedevo suggerimenti

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.