On Jul 5, 2007, at 2:44 AM, appel wrote:
appel wrote:
Hi,
I have inside my war file, which is extracted when deployed in
Geronimo, a
properties file I want to both read, and also write. Reading the
file is
easy with ResourceBundle, but I can't think of a way to modify the
properties file... for instance changing the value of some property.
I can open the file manually with a full path, but I don't want my
web app
to be dependent on the system it's deployed, for instance if I
have to
deploy it on another computer using Geronimo and it's located in
another
directory.
However, I don't want to override any changes to the properties
file if I
redeploy the application, so I need to generate the properties file
the
first time the application is run and keep it OUTSIDE the
extracted-directory.
That is...
My Geronimo installation is located in "/opt/geronimo", and my
deployed web
application is located in
"/opt/geronimo/repository/stuff/SomeApp/0.1/SomeApp-0.1.war/"
But, if I write a file (with no path) it will be written into
"/opt/geronimo/bin/somefile". I want this "somefile" to be written
into
"/opt/geronimo/repository/stuff/SomeApp/0.1/", but this path can
change
depending on how I deploy it and where.
Any ideas?
I'm glad you realized that writing files into your application may
lead to problems :-)
Geronimo has a var directory for this purpose, I suggest you put your
configuration file there.
You can find out where the var directory is by using the ServerInfo
gbean.
You should be able to get the system info gbean by declaring a gbean-
ref in your geronimo plan and looking it up in jndi. However this
isn't tested a lot and I can't guarantee it will work. I think it's
only available in geronimo 1.2 and 2.0: it might be in 1.1.1 also.
The gbean ref should look something like
<gbean-ref>
<ref-name>system-info</ref-name>
<ref-type>org.apache.geronimo.system.serverinfo.ServerInfo</ref-
type>
<pattern>
<name>ServerInfo</name>
</pattern>
</gbean-ref>
and you'd look it up something like:
ServerInfo serverInfo = (ServerInfo) new InitialContext().lookup
("java:comp/env/ServerInfo");
File myConfig = serverInfo.resolveServer("var/myappconfig/
myConfig.properties");
Note I'm using resolveServer which will still work even if you've
relocated the var directory, perhaps if you're running multiple
servers off the same repository.
Hope this helps
david jencks
--
View this message in context: http://www.nabble.com/How-to-read-and-
write-a-bundle-properties-in-a-war--tf4028664s134.html#a11443595
Sent from the Apache Geronimo - Users mailing list archive at
Nabble.com.