Ik zit met een probleem waar ik onderhand echt helemaal gek van wordt.
Laat ik bij het begin beginnen...
Ik heb een tijdje geleden de Java Web Services Developer Pack gedownload en geinstalleerd.
Daar zit dus Tomcat 5, Ant en nog een hele hoop andere interessante dingetjes in. Ik ben nu dus een beetje
aan het uitproberen en ik had gedacht om een klein servletje te schrijven die wat data uit een Mysql-db haalt en deze op het scherm tovert. Omwille van portabiliteit enzo heb ik mijn database-naam, wachtwoord, host etc in een file db.properties gegooid. En daar begint dus het gemieter, waar plaats ik dit bestand zodat het op een veilige locatie staat (niet-leesbaar door de wereld) maar wel kan worden gevonden vanuit mijn servlet??
In de documentatie van Tomcat5 staat dat als ik belangrijke files heb (zoals dus mijn db.properties) dat ik deze in de directory /web/WEB-INF moet gooien omdat deze (volgens de servlet-specs) nooit kan worden ge'served'
Oke, ik gooi de property-file dus in die directory, maak mijn servletje, start ant om alles in te pakken en te deployen op de Tomcat server. Voor Ant heb ik de volgende directory structuur aangemaakt:
/docs
/src/nl/jmaasland/athena/servlets/
/web/WEB-INF
Na het doorlopen van vanalles en nogwat maakt Ant voor mij een .war waar het volgende allemaal in staat:
--
META-INF/
META-INF/MANIFEST.MF
WEB-INF/
WEB-INF/classes/
WEB-INF/classes/nl/
WEB-INF/classes/nl/jmaasland/
WEB-INF/classes/nl/jmaasland/athena/
WEB-INF/classes/nl/jmaasland/athena/servlets/
WEB-INF/lib/
WEB-INF/classes/nl/jmaasland/athena/servlets/LokalenManagerServlet.class
WEB-INF/web.xml
WEB-INF/db.properties
index.html
--
In de servlet probeer ik de property file te laden met de volgende code
Properties dbProperties = new Properties();
dbProperties.load(new FileInputStream("WEB-INF/db.properties"));
En daar krijg ik dus een foutmelding dat hij het bestand niet kan vinden.
Ik heb al een aantal dingen geprobeerd. Ik heb de file db.properties in de
src/nl/jmaasland/athena/servlets directory gegooid, vervolgens proberen de file te laden met ./db.properties
Geen resultaat... Dat bracht me op het idee om te kijken waarnaar de . entry naar verwijst. Met behulp van
File(".").getAbsolutePath() kijk ik en zie ik dat dit verwijst naar /usr/local/jwsdp/bin !! De directory van de Tomcat server! Als ik db.properties daar dan neerzet en laad met "./db.properties" dan vindt hij het bestand wel, maar dit is natuurlijk geen oplossing.
Ik wil gewoon de db.properties vanuit mijn war lezen.
Heeft iemand hier suggesties want ik heb echt geen idee meer hoe ik dit voor elkaar kan krijgen.....
Laat ik bij het begin beginnen...
Ik heb een tijdje geleden de Java Web Services Developer Pack gedownload en geinstalleerd.
Daar zit dus Tomcat 5, Ant en nog een hele hoop andere interessante dingetjes in. Ik ben nu dus een beetje
aan het uitproberen en ik had gedacht om een klein servletje te schrijven die wat data uit een Mysql-db haalt en deze op het scherm tovert. Omwille van portabiliteit enzo heb ik mijn database-naam, wachtwoord, host etc in een file db.properties gegooid. En daar begint dus het gemieter, waar plaats ik dit bestand zodat het op een veilige locatie staat (niet-leesbaar door de wereld) maar wel kan worden gevonden vanuit mijn servlet??
In de documentatie van Tomcat5 staat dat als ik belangrijke files heb (zoals dus mijn db.properties) dat ik deze in de directory /web/WEB-INF moet gooien omdat deze (volgens de servlet-specs) nooit kan worden ge'served'
Oke, ik gooi de property-file dus in die directory, maak mijn servletje, start ant om alles in te pakken en te deployen op de Tomcat server. Voor Ant heb ik de volgende directory structuur aangemaakt:
/docs
/src/nl/jmaasland/athena/servlets/
/web/WEB-INF
Na het doorlopen van vanalles en nogwat maakt Ant voor mij een .war waar het volgende allemaal in staat:
--
META-INF/
META-INF/MANIFEST.MF
WEB-INF/
WEB-INF/classes/
WEB-INF/classes/nl/
WEB-INF/classes/nl/jmaasland/
WEB-INF/classes/nl/jmaasland/athena/
WEB-INF/classes/nl/jmaasland/athena/servlets/
WEB-INF/lib/
WEB-INF/classes/nl/jmaasland/athena/servlets/LokalenManagerServlet.class
WEB-INF/web.xml
WEB-INF/db.properties
index.html
--
In de servlet probeer ik de property file te laden met de volgende code
Properties dbProperties = new Properties();
dbProperties.load(new FileInputStream("WEB-INF/db.properties"));
En daar krijg ik dus een foutmelding dat hij het bestand niet kan vinden.
Ik heb al een aantal dingen geprobeerd. Ik heb de file db.properties in de
src/nl/jmaasland/athena/servlets directory gegooid, vervolgens proberen de file te laden met ./db.properties
Geen resultaat... Dat bracht me op het idee om te kijken waarnaar de . entry naar verwijst. Met behulp van
File(".").getAbsolutePath() kijk ik en zie ik dat dit verwijst naar /usr/local/jwsdp/bin !! De directory van de Tomcat server! Als ik db.properties daar dan neerzet en laad met "./db.properties" dan vindt hij het bestand wel, maar dit is natuurlijk geen oplossing.
Ik wil gewoon de db.properties vanuit mijn war lezen.
Heeft iemand hier suggesties want ik heb echt geen idee meer hoe ik dit voor elkaar kan krijgen.....