views:

495

answers:

2

Hello

I wonder if anyone can advise on a Java webapp question?

I have a set standard Java class which has methods to set and get values of a property file. These methods are used system wide and are called by servlets and non-servlet class methods alike.

But what I would like to do is to use a ServletContextListener to set the paths to the property file globally rather than hard code them or store them in the database.

A ServletContextListener can be used to set 'global variables' for the servlets with context.setAttribute("PROP_FILE_PATH", "C:\..."). But is there a way to access these variables outside the servlets or can ServletContext be accessed outside servlets?

I don't think passing the ServletContext as a parameter to the class methods I have to get and set property file values will be a viable option because of the number of calls.

Thanks

Martin

A: 

You could always store your settings in a different place than the Servlet Context, say a set of static variables on a configuration class. Then the ServletContextListener could set those variables on startup, and any other code can access those statics, regardless of whether they have access to the ServletContext itself or not.

Adam Batkin
A: 

ServletContext can be used within the context or boundaries of a servlet.

You can store the variables in the jndi server that ships along with the app server and can use the initial context to get the variables from there.

Also the classes that load the properties file, you can bundle in a jar and put that jar in the classpath of your server (you can refer to server startup script and put it in the classpath there).So when your server is loaded load a class with a static {} bloc inside it and refer to those properties file. You can then refer to this class directly as it is in server classpath.As regarding hard coding the path to properties file , you can store it in the jndi server.

Rajat