Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » Tomcat Users »

Re: Static ints being cached

Frode E. Moe

2004-01-08

Replies:

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: tomcat-user-unsubscribe@(protected)
For additional commands, e-mail: tomcat-user-help@(protected)



©2008 junlu.com - Jax Systems, LLC, U.S.A.