PDA

View Full Version : [JSP] pathname di un file da utilizzare


nazkul
29-10-2007, 07:54
Ciao, sto facendo un'applicazione per il web e mi serve leggere il contenuto di un file .xml, però non ho idea di come fare per permettere alla classe addetta alla lettura come trovare quel file:
questo file è in una delle cartelle che formano il progetto, solo che quando faccio

SqlConfig pars=new SqlConfig("Dati.xml");


e poi testo il mio progetto, Eclipse mi segnala:

C:\Programmi\Eclipse Enterprise Edition\eclipse\Dati.xml (Impossibile trovare il file specificato)



Infatti non ha quel pathname, solo che non ho idea di come dargli il path locale, anche perché per Eclipse
codice:C:\Programmi\Eclipse Enterprise Edition\eclipse\

è prefisso costante in ogni path che metto.

Provando un'applicazione stand alone, se metto


"./src/dati.xml"


lo trova, se è web application non va più bene.
Se qualcuno mi può aiutare lo ringrazio in anticipo.
:)

AnonimoVeneziano
29-10-2007, 14:53
Mmm, non sono un esperto del mondo di JSP e servlets, ho iniziato da poco (2 giorni fa) , ma so che con "application.getRealPath("nomefile");" si può ottenere il path reale di un file all'interno della directory di root dell'applicazione.

Non so se è quello che cercavi e non so neanche si ti sono stato utile o ti ho solo confuso le idee, comunque vedi tu :D

Ciao

EDIT: ma a te Eclipse funziona bene? Io ho dovuto passare a Netbeans perchè con JavaEE Eclipse crashava , sia su Windows che su Linux, ogni 3,4 minuti in media

nazkul
30-10-2007, 09:42
Ciao, non sono riuscito a provare quel metodo, non capisco quale import devo fare perché non trovo la classe nella documentazione. C'è la classe Application ma non ha quel metodo... mi sai dire cosa dovrei importare?

Comunque credo che non sia proprio ciò di cui ho bisogno, la classe che deve analizzare il file non è una servlet o bean, è una classe che si occupa della connessione con un DB, si appoggia a un parser xml e deve cercare questo file dove sono messi i dati di login. Però purtroppo emergono questi problemi in fase di ricerca di dati.xml.

Ciao e grazie mille :)

isAlreadyInUse
30-10-2007, 09:48
E chi è che chima i metodi di questa classe?

nazkul
30-10-2007, 10:21
Dunque:
una javaBean si appoggia a ElaboraDB che delega alla classe ConnectionManager che usa SqlConfig che ha un riferimento al parser.

Dati.xml deve essere letta da ConnectionManager che poi passa la stringa che rappresenta il pathname a SqlConfig e poi verrà letto il suo contenuto.

Non so se ho reso l'idea della struttura, forse ho estremizzato molto la "delegation".
:D

ally
30-10-2007, 14:20
...è possibile annegare i dati di connessione del db nel server.xml del webserver...così avresti modo di delegare lo stesso webserver a gestire il pool di connessioni....

...ciao...

ally
30-10-2007, 14:22
...posto una classe per gestire un file.properites...un altro spunto per risolvere il tuo cruccio...con le opportune modifiche si puo' adattare al tuo file xml...


public class Costanti {

private static final String FILE_PROPERTIES = "config.properties";

private static String docRoot;

private static java.util.Properties properties = null;

private static Costanti me = null;

protected Costanti() {
try {
properties = new java.util.Properties();
if (docRoot != null)
properties.setProperty("docRoot", docRoot);
String file = docRoot
+ System.getProperty("file.separator") + "WEB-INF"
+ System.getProperty("file.separator") + "classes"
+ System.getProperty("file.separator") + FILE_PROPERTIES;
properties.load(new FileInputStream(file));
} catch (Exception e) {
e.printStackTrace();
}
}

private static void makeInstance() {
if (me == null) {
me = new Costanti();
}
}

public static void setDocRoot(String docRootPath) {
if (docRoot == null)
docRoot = docRootPath;
}
public static String getDocRoot() {

return docRoot;
}

public static String getProperty(String key) {
return _getProperty(key);
}

private static String _getProperty(String key) {
makeInstance();
return properties.getProperty(key);
}

public static void setProperty(String key, String value) {
makeInstance();
_setProperty(key, value);
}

private static void _setProperty(String key, String value) {
properties.setProperty(key, value);
}
}


...ciao...

nazkul
30-10-2007, 17:26
Ciao, mi sa che come soluzione per il mio caso non può andare, in quanto il mio è un progetto da consegnare per essere testato con Tomcat su un altro computer, è un progetto per un esame in pratica.
Da qui la scelta del file xml, la necessità del dump per il DB ecc...
Dopo averci ragionato un po' mi rendo conto che averlo strutturato così dovrebbe essere la scelta giusta, solo che non so dove sbattere la testa con questo errore in fase di test.
Comunque ti ringrazio per i consigli.
:)

ally
30-10-2007, 17:34
Ciao, mi sa che come soluzione per il mio caso non può andare, in quanto il mio è un progetto da consegnare per essere testato con Tomcat su un altro computer, è un progetto per un esame in pratica.
Da qui la scelta del file xml, la necessità del dump per il DB ecc...
Dopo averci ragionato un po' mi rendo conto che averlo strutturato così dovrebbe essere la scelta giusta, solo che non so dove sbattere la testa con questo errore in fase di test.
Comunque ti ringrazio per i consigli.
:)

...la soluzione del secondo post dovrebbe a mio avviso fare al caso tuo...


protected Costanti() {
try {
properties = new java.util.Properties();
if (docRoot != null)
properties.setProperty("docRoot", docRoot);
String file = docRoot
+ System.getProperty("file.separator") + "WEB-INF"
+ System.getProperty("file.separator") + "classes"
+ System.getProperty("file.separator") + FILE_PROPERTIES;
properties.load(new FileInputStream(file));
} catch (Exception e) {
e.printStackTrace();
}
}


...questa parte di codice permette di trovare senza problemi il file di properties...in qualunque directory l'applicativo web venga installato...e con qualunque sistema operativo...che poi tu voglia utilizzare un file xml non cambia nulla...

...ciao...