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.


Reply via email to