Hallo Forum,
ich habe folgendes Problem, in meinem dynamischen WebProjekt will ich Datenbank-Parameter aus einem Property-File laden. Das funktioniert auch soweit mit folgender Struktur und folgendem Aufruf:
Ich nutze EclipseIndigo und Tomcat7.
Struktur:
>Projektname
>|>build
>|>|>classes
>|>|>|>de (neben "de" liegen Properties)
>|>|>|>|>firma
>|>|>|>|>|>projekt
>|>|>|>|>|>|>Hier liegen meine Klassen/Servlets
So rufe ich das Property-File auf:
Aber eigentlich will ich meine Properties neben dem Ordner "Projektname" ablegen, also so:
>Projektname (neben "Projektname" liegen Properties)
>|>build
>|>|>classes
>|>|>|>de
>|>|>|>|>firma
>|>|>|>|>|>projekt
>|>|>|>|>|>|>Hier liegen meine Klassen/Servlets
Das Property-File würde ich dann so aufrufen wollen:
Allerdings bekomme ich dann immer eine NullPointerException:
Kann es sein, dass ich mit Eclipse nicht auf Quellen ausserhalb meines Webprojektes zugreifen kann.
Ich will ja, dass meine Properties neben dem Projektordner liegen.
Vielleicht noch kurz zu meinen Hintergründen. Ich würde die Properties deshalb gerne neben dem Projektordner haben, weil ich *nicht* will, dass die Properties mit in das WAR-File eingepackt werden.
Denn wir lagern die Properties extra aus, um sie auch auf dem Server einfach kurz ändern zu können.
Wenn Sie aber ins WAR-File integriert sind, kann es ja sein, dass mein Servlet-Container beim erneuten entpacken des WAR-Files die veränderten Properties wieder mit den ursprünglichen überschreibt. Das stimmt doch so, oder?
Und um das Projekt aber auch lokal testen zu können, muss ich genau 6 Ordner-Stufen nach oben schreiten.
In Catalina-Home wollen wir die Properties nicht packen. Das würde ja über eine Umgebungsvariable möglich sein.
Vielen Dank für eure Hilfe.
Schöne Grüße
ich habe folgendes Problem, in meinem dynamischen WebProjekt will ich Datenbank-Parameter aus einem Property-File laden. Das funktioniert auch soweit mit folgender Struktur und folgendem Aufruf:
Ich nutze EclipseIndigo und Tomcat7.
Struktur:
>Projektname
>|>build
>|>|>classes
>|>|>|>de (neben "de" liegen Properties)
>|>|>|>|>firma
>|>|>|>|>|>projekt
>|>|>|>|>|>|>Hier liegen meine Klassen/Servlets
So rufe ich das Property-File auf:
Java:
...
BufferedReader br = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream(".."+File.separator+".."+File.separator+".."+File.separator+"file.properties")));
...
Aber eigentlich will ich meine Properties neben dem Ordner "Projektname" ablegen, also so:
>Projektname (neben "Projektname" liegen Properties)
>|>build
>|>|>classes
>|>|>|>de
>|>|>|>|>firma
>|>|>|>|>|>projekt
>|>|>|>|>|>|>Hier liegen meine Klassen/Servlets
Das Property-File würde ich dann so aufrufen wollen:
Java:
...
BufferedReader br = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream(".."+File.separator+".."+File.separator+".."+File.separator+".."+File.separator+".."+File.separator+".."+File.separator+"file.properties")));
...
Allerdings bekomme ich dann immer eine NullPointerException:
Java:
SCHWERWIEGEND: Servlet.service() for servlet [de.bfs.odlinfo.Stations] in context with path [/StationsServlet] threw exception
java.lang.NullPointerException
at java.io.Reader.<init>(Unknown Source)
at java.io.InputStreamReader.<init>(Unknown Source)
at de.bfs.odlinfo.DbReader.load(DbReader.java:46)
at de.bfs.odlinfo.DbReader.<init>(DbReader.java:82)
at de.bfs.odlinfo.Stations.processRequest(Stations.java:53)
at de.bfs.odlinfo.Stations.doGet(Stations.java:100)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:851)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:278)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Kann es sein, dass ich mit Eclipse nicht auf Quellen ausserhalb meines Webprojektes zugreifen kann.
Ich will ja, dass meine Properties neben dem Projektordner liegen.
Vielleicht noch kurz zu meinen Hintergründen. Ich würde die Properties deshalb gerne neben dem Projektordner haben, weil ich *nicht* will, dass die Properties mit in das WAR-File eingepackt werden.
Denn wir lagern die Properties extra aus, um sie auch auf dem Server einfach kurz ändern zu können.
Wenn Sie aber ins WAR-File integriert sind, kann es ja sein, dass mein Servlet-Container beim erneuten entpacken des WAR-Files die veränderten Properties wieder mit den ursprünglichen überschreibt. Das stimmt doch so, oder?
Und um das Projekt aber auch lokal testen zu können, muss ich genau 6 Ordner-Stufen nach oben schreiten.
In Catalina-Home wollen wir die Properties nicht packen. Das würde ja über eine Umgebungsvariable möglich sein.
Vielen Dank für eure Hilfe.
Schöne Grüße