Newsgroup: it.comp.java
Titolo: Applet Netscape/Explorer???

Ciao a tutti
Ho un problemino da sottoporre alla vostra attenzione (premetto che sono
alle prime armi con il Java!).
Ho realizzato una applet per visualizzare in una pagina HTML alcuni dati
prelevati (letti) da un file che risiede su un server interno alla ditta.
Tutto funziona con Netscape ma con Internet Explorer non ne vuole sapere,
mi visualizza la finestra dell'applet vuota!!!
Ringrazio in anticipo tutti quelli che mi aiuteranno e posto anche il
codice del sorgente Java.
Grazie e Ciao
Sara
import java.io.*;                
import java.lang.*;
import java.awt.Font;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.FontMetrics;
public class ReleasePsw extends java.applet.Applet
{
 	Font f = new Font("TimesRoman", Font.PLAIN, 12);
	public void paint(Graphics g) 
	{
		FileInputStream LeggiPsw = null;
		int release,i,r = 0;
		double relfl = 0.0;
		String pathFile = getParameter("pathfile");
		try
		{ 
 
			LeggiPsw = new FileInputStream(pathFile);
		}
		catch (IOException e)
		{
			 System.exit(0);
		}
 
 
		try
		{
			LeggiPsw.skip(11);
		}
		catch (IOException e)
		{
			System.exit(0);
		}  
 		release = 0;
 		try
		{
			for(i=0; i<3; i++)
			{
				r = LeggiPsw.read();
				release +=( r - 48);
				release *= 10;
      			}
    		}
		catch (IOException e)
		{
			System.exit(0);
		}  
		relfl = (double)release / 1000; 
		FontMetrics fm = getFontMetrics(f);
		g.setFont(f);
		g.setColor(Color.red);
		String s = "La release e': ";
		String rel = s.valueOf(relfl);
		s = s + rel;
		int xstart = (this.size().width - fm.stringWidth(s)) / 2; 
		int ystart = (this.size().height - fm.getHeight()) / 2;
		g.drawString(s, xstart, ystart);
	}
} 
--
Posted from [195.223.129.35]
via Mailgate.ORG Server - 
http://www.mailgate.org

Strano che ti funzioni con Netscape; solitamente per leggere un file da un
server, devi dargli il percorso come un URL, ovvero:
URL url = new URL(urlBase, "percorso/file_da_caricare");
DataInputStream dis = new DataInputStream (url.openStream ());
Dovrebbe andare. Ovviamente il file deve trovarsi in una directory che sta
sotto quella della root del server.
Ciao,
Francesco

Dato che sei stato cosi' gentile da rispondermi, ti spiego meglio la
situazione: questi file da cui devo leggere informazioni, sono file di
progetto   che hanno già la loro archiviazione su una specifica area
informatica (cioè il server dati), perciò io non posso assolutamenti
spostarli nella directory del sito web (anche il server internet è interno
all'azienda).
Come posso fare allora??? 
Grazie 1000 per l'aiuto
Ciao Sara




Devi utilizzare un modulo three-tier (a tre livelli), facendo uso dei servlet.
I servlet sono CGI scritti in Java che si comportano tuttavia come applicazioni,
non avendo pertanto le limitazioni dell'applet e potendo spaziare su tutto
l'Hard Disk; richiedono però un server web apposito (che li supporti),
come il Java Web Server della SUN (a pagamento) o il più economico
JRUN (gratuito), che può esitere stand-alone o in appoggio a un
server web esistente (ad es. Apche, per il quale esiste anche per Linux).
Il sito non lo ricordo, ma una ricerca con JRUN ti dovrebbe dare successo.

Poi hai bisogno del JSDK2.0 della SUN (libero da scaricare) che contiene
il JSDK.jar, ovvero la libreria per fare i servlet e un piccolo tutorial
per usarli (migliori spiegazioni le trovi anche su 
http://www.mokabyte.it
).
Inoltre c'è il servletrunner, un programma che emula (in ambiente
windows) un server web che li supporta. In poche parole un servlet entra
in funzione solo quando invocato da un cliente (nella classica formula:

http://www.miosito.it:numeroDiPortaInAlcuniCasi/servlet/NomeServlet
).

Come ti risolvono il problema? E' il modulo a tre livelli che aggira
l'ostacolo dei limiti del browser: l'applet invoca la URL del servlet adibito
a leggere il documento, questi spazia sul disco andando a trovarlo dove
opportuno (o gli cabli il percorso del documento o glielo passi come parametro
quando invochi la URL), lo trova, lo legge e se è testuale lo scrive
direttamente sullo stream di collegamento con il client, altrimenti serializza
l'array binario su cui potresti avere spostato il contenuto del file (vedi
writeObject) e quindi lo scrive sullo stream. Dall'altra parte l'applet,
che era in attesa dei dati, li riceve, e li tratta come se li avesse letti
da un file (basta gestire lo stream con la URL), eventualmente dopo avere
deserializzato il tutto.

Lo so che c'e' molto in poco spazio, ma spero di averti dato una buona
dritta...

Ciao,

Francesco

 


--


* * * * * * * * * * * * * * * * * * * * * * * *


   De Milato Francesco - Ph.D. Student


   ESNG - Electronic Systems & Networking Group


   University of Genoa - DIBE


   via All'Opera Pia 11/a, I-16145 Genoa (Italy)


   phone/fax: 
+39-010-353-2271
/2175


   
demi...@dibe.unige.it


* * * * * * * * * * * * * * * * * * * * * * * *