PDA

Visualizza la versione completa : [JAVA] Anomalia classe richiamata da servlet


fraper
30-11-2005, 10:49
Salve...nel file web.xml, ho mappato una servlet aggiungendo anche l'opzione <load-on-startup>...così facendo (come tutti sapete) il metodo INIT della servlet viene eseguito in fase di avvio dell'applicazione...in questo INIT, istanzio una classe e chiamo un metodo della stessa che, dopo aver eseguito il suo compito, mi ritorna un vettore di stringhe...il mio problema sta nella classe..in particolare, questa classe accede ai dei file XML/XLS dirattamente da URL tipo "http://localhost:8084/web/file/file.xml"...mi capita però che, se lancio la servlet manualmente, tutto quello che c'è nel metodo init e cioè l'istanziazione della classe, la chiamata al metodo ed il resto, vanno a buon fine...mentre se avviene il load-on-startup della servlet, stranamente, la classe che per fare ciò che deve fare,deve accedere a quei file XML direttamente da URL, non riesce ad accedervi...come si spiega? è un problema di context-path? o cosa??? Aiuto!

fraper
30-11-2005, 15:53
UP!!!

fraper
05-12-2005, 12:29
UP!!! Nessuno sa spiegarmi il perchè???

anx721
05-12-2005, 14:22
ma perchè accedi con la url?

e cosa succede? e lanciata un'eccezione?

fraper
05-12-2005, 14:52
in pratica sto utilizzando il package xalan che, preso un file XML ed un relativo XSL, genere dinamicamente il contenuto HTML, ad esempio di una pagina web...restituendo il codice in una stringa o in un altro tipo di outputStream...quello che serve a me, è avere questa/e stringa/e in memoria all'avvio dell'applicazione...dunque il ciclo è il seguente...nel mio web.xml ho mappato una servlet con l'opzione "load-on-startup"...questa esegue l'init() e nell'init istanzia tale classe e chiama un metodo...questo metodo, prende sti benedetti file .XML e .XSL da URL (da dove li dovrebbe prendere se no???) ed esegue la trasformazione....il problema è che quando tutta questa operazione viene fatta all'avvio dell'applicazione...mi viene generata un'eccezione che mi dice che la classe addetta alla trasformazione, non riesce a "compilare il file .XML" (ed anche gli altri .XML e .XSL)...quando invece se faccio partire l'applicazione normalmente, senza nessuna servlet load-on-startup e, invoco la stessa servlet, mettendo lo stesso codice che c'è nell'init(), nel service(), tutto va a buon fine...come mai????

fraper
05-12-2005, 16:49
UP!!!

anx721
05-12-2005, 17:47
1 - posta l'eccezione che ti viene restituita
2 - non ho capito perche devi far riferimento a tali file con un'url, e non con un percorso nel file system
3 - questa url appartiene al dominio dell'applicazione che si sta inizializzando? magari scatta l'eccezione perchè l'applicazione non è ancora inizializzata e te già stai chiedendo una sua risorsa, mentre se chiedi i file dopo, quando l'applicazione è partita il problema non c'è più.

fraper
05-12-2005, 18:05
ma perchè dovrei fare riferimento al path del file system? se l'applicazione gira su una macchina server qualsiasi, come faccio a sapere il path del file system...con l'url so che, sarà quello e basta su qualsiasi macchina server...rispiegami il fatto del dominio dell'applicazione???

V1RuZ
05-12-2005, 18:19
Originariamente inviato da fraper
ma perchè dovrei fare riferimento al path del file system? se l'applicazione gira su una macchina server qualsiasi, come faccio a sapere il path del file system...con l'url so che, sarà quello e basta su qualsiasi macchina server...rispiegami il fatto del dominio dell'applicazione???

puoi usare la path a partire da:



String path = getServletContext().getRealPath("/");


Mentre se ti servono parametri visibili in tutte le servlet, puoi anche metterli nel web xml e recuperarli con:



getServletContext().getInitParameter("nome_parametro");

fraper
05-12-2005, 19:56
credo che sia proprio quello che mi serve...grazie...proverò.

Loading