Servlet: uso di Constants.java class vs context param

1

Mi sto solo chiedendo se mantenere alcune delle mie variabili nella classe Constants o tenerlo in web.xml

Dire, voglio mantenere una variabile del prefisso API del grafico di Facebook o api_key , client_id

Da quanto ho capito, la differenza tra Constants.java e web.xml è web.xml è più facile riscrivere su compilazione usando ant.

Quindi, puoi sostituire le tue variabili in web.xml in base all'ambiente in cui stai costruendo l'app. ( client_id varia in base all'ambiente di sviluppo / all'ambiente di produzione, per esempio)

Se ho capito bene, allora il prefisso dell'API di Facebook dovrebbe essere tenuto in Constants.java (perché è sempre "https://graph.facebook.com/") e api_key , client_id dovrebbe essere mantenuto in web.xml?

Qual è il modo corretto di usarli?

    
posta Pongsakorn Semsuwan 02.10.2012 - 10:49
fonte

2 risposte

1

Nel tuo scenario, questi valori sono meglio conservati nel file delle proprietà. Creare un file delle proprietà in classpath e leggerlo all'avvio dell'applicazione per creare un'istanza dei valori. Oppure puoi leggerli freschi per ogni richiesta, se tendono a cambiare. Java fornisce un modo molto semplice per leggere / scrivere il file delle proprietà con Properties class.

Puoi anche esternalizzare il file delle proprietà se lo desideri. inserirli nella home directory dell'utente per renderli completamente indipendenti. Pensaci, quando cambi il valore e l'applicazione in esecuzione prende il nuovo valore senza ricostruire o addirittura ridistribuire.

    
risposta data 16.10.2012 - 08:03
fonte
3

Beh, in realtà dipende da quanto siano "costanti":

  • se sono vere costanti che non cambiano mai, non quando si modifica l'ambiente di distribuzione (integrazione, produzione, ecc.), non quando lo si distribuisce dal lato del proprio cliente, piuttosto è ragionevole tenerle come costanti Java (campi finali) in alcune classi Java.

  • se cambiano con l'ambiente, averli come costanti Java è ovviamente negativo. Metterli in web.xml è un po 'meglio, ma dovrai comunque modificare qualcosa nel tuo progetto per ridistribuirlo in un altro ambiente. Quello che mi piace fare in queste situazioni è passare i valori come proprietà di sistema. La tua app dovrebbe avere una classe generica "Config" che sia in grado di recuperare il valore di una proprietà di sistema data il suo nome (tramite System.getProperty("propName") ) e quindi configurare il mio ambiente con valori specifici per tali proprietà (tramite .bashrc o tramite Web App Argomenti di avvio del server).

risposta data 02.10.2012 - 13:00
fonte

Leggi altre domande sui tag