Í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