Írta: tom1964h
Config file és a Java servlet indítása
Property file használata servlet-ek esetében
Alapvetően fontos, hogy a kapcsolatokat (adatbázis connect-ek, username, stb.) ne a kódba “égessük be”, hanem külön file-ban tároljuk le a tulajdonságok leírását:
- ez a Property file (neve lehet
config.conf
,properties.prop
stb….) - helyreállítás, portolás, szállítás vagy egyéb más esetben is könnyebb a property file-on keresztül naprakésszé tenni a működést
- a servlet (pl.TestServlet) indításakor (backend) a konténer innen olvassa be az elérési adatokat
- szerkezete: kulcs: érték, pl.:
–
dbusername=....
–dbpassword=....
- a property-állomány:
vagy az elérési helyét át kell adni a TestServlet-nek (ahonnan az beolvasssa)
vagy kell egy-egy változó beleégetve a
TestServlet.java
-ba, amely az elérési utat tartalmazza (ez nem változik futási időben):private static final String LOCATION = "...";
vagy egy környezeti változóba is berakhatom ezt az elérési utat és onnan is ki tudja szedni a Java: le kell tárolni valamilyen néven és az .init() metódus elején beolvashatom:
System.getenv("....");
(ezzel elrejthető ez az érték is);
- a property beolvasása (külső file esetén) - minden esetben TRY-CATCH-FINALLY ágban megvalósítandó:
importot beírni az elejére:
import java.util.Properties;
az init() metódusba berakni:
Properties pr = new Properties(); File conf = new File(LOCATION); if (conf.exists() && conf.canRead()) { pr.load(new FileInputStream(conf) ... }
példányosítok egy File objektumot a megadott filenévvel, és ha létezik és olvasható, akkor egy névtelen FileInputStream-en keresztül “rendesen kezelhető” Properties-t példányosítok vele
ezzel kiszedhető a config file-ból a szükséges adat: pl.
String username = pr.getProperty("dbusername");
- az .init() petódus csak egyszer fut le a servlet inditásakor