Salve,
mi scuso per il titolo, ma non riesco ad esprimere il concetto in poche parole.
Ho bisogno di un consiglio su un modulo che sto sviluppando.
Il modulo realizza un'interfaccia di ricerca altamente flessibile da poter utilizzare in applicazioni web ed e' organizzato dentro un file jar. Naturalmente, per far si che funzioni, nell'applicazione dev'essere scritta una classe "ad hoc" esterna al jar che estenda una classe interna del jar e implementi i suoi metodi astratti (acquisizione della connessione al database, salvataggio di parametri opzionali per l'applicazione, ecc).
Oltre a questa classe, fuori dal jar devono essere scritti alcuni file xml che configurano il package.
Ora volevo dei consigli su come passare il path dei file al pacchetto, tenendo in considerazione che:
1) Le variabili che devono memorizzare questi path sono nella classe astratta che viene estesa.
2) La classe astratta estende HttpServlet e la classe che la estende a sua volta e' quella che viene registrata nel file web.xml come servlet vera e propria.
3) I metodi che usano queste variabili sono già implementati nella classe astratta.
4) La posizione dei file xml rispetto al file jar o alla classe esterna non puo' essere determinata a priori.
Le idee che mi sono venute in mente sono:
- includere un metodo astratto inizializzaVariabili(), nel quale chi scrive la servlet per l'applicazione si prende la briga di settare le variabili. Il metodo verebbe richiamato dalla init della "servlet astratta".
- leggere nel metodo init i vari path da un file di property. Il codice starebbe nella "servlet astratta", ma viene eseguito dalla servlet vera e propria che ha nella sua stessa cartella un file di properties apposito.
codice:
//Codice della classe astratta che in realtà viene eseguito dalla classe esterna al jar
private String PathFileXML1 = null;
private String PathFileXML2 = null;
public void init(){
try {
Properties props = new Properties();
props.load(new FileInputStream(new File("path.properties")));
PathFileXML1 = props.getProperty("path1").trim();
PathFileXML2 = props.getProperty("path2").trim();
} catch(Exception e) {
//Gestisco l'eccezione.
}
}
Per il momento preferisco il secondo.
Volevo sapere se ci sono modi piu' furbi per settare questo tipo di variabili, pubblicazioni che trattano argomenti affini o comunque se qualcuno avesse qualche idea in merito.
Ciao e grazie delle eventuali risposte.