On Thu, Jan 08, 2004 at 09:53:14 -0000, Allistair Crossley wrote: > Hi All, > > I have an interface containing public final static ints. My servlets reference these > ints when making database inserts. Yesterday I reordered the values of the ints and > noticed that old values were still being placed into the database. I guess this was > somehow a caching problem. I deleted the .class from Tomcat to ensure a recompile > would place a new .class and restarted Tomcat, but old values still went in the > database! > > - If I output the static ints from a JSP the new values come out. > - If I output the static ints from a class the old values come out. > - If I force the class using the interface to recompile, then the class starts using > the new values > > It seems that somehow references are being stored by Tomcat somewhere since a > restart does not work but I don't know much about this. I would like to trust that > when I change values that Tomcat is able to pick these up, at the very least on a > restart!! I don't want to go through recompiling my whole app. > > I am using Ant in a multi-developer environment to compile and it compiles only > classes that have changed. I cannot recompile the whole app everytime I change > constant values. > > Help and understanding appreciated ...
The values of static final ints are copied into classes referring to those as an optimization by the java compiler. So if you have class A with some public static final ints in, and a class B referencing these values, you will need to recompile class B if you change class A. Or you need to make them non-final, so that java will actually look at the current values in class A every time. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]