You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Jason Pyeron <jp...@pdinc.us> on 2015/03/06 23:08:34 UTC
RE: [tomcat-users] How to force Tomcat to use the system clock?
> -----Original Message-----
> From: Salisbury, Richard W DLA CTR INFORMATION OPERATIONS
> Sent: Friday, March 06, 2015 16:29
>
> Greetings,
>
> We have found a need to stop and start Tomcat once in a while to allow
How long is a "while"?
> Tomcat to connect via HTTPS with some other servers. We think the
> restart may be synchronizing the time Tomcat uses with the server OS
> system time, and we are looking for ways to prevent having to
> stop/start
> Tomcat.
I want to start with, I am very skeptical to your observations.
>
> Details:
> Our instance of Tomcat 6.0.36 runs on HP-UX B11.31 ia64 with
> JVM Version
JVM vendor?
> 1.7.0.08. It hosts a custom servlet which, when invoked,
> connects with
> a remote server via HTTPS to retrieve some data. However,
The webapp make an outbound HTTPS connection or a client makes a HTTPS connection to the webapp?
> after about a
> month the timestamp Tomcat sends in the SSL handshake appears to drift
> enough for the remote server's time to start rejecting
> requests because
> the timestamp is too far off (according to our partner's remote
> application logs).
How far off?
>
> We have confirmed that our server clock is set correctly and
> synced with
> NTP, and matches the system clock on the remote server, which
> also uses
> NTP. So one thing we thought might be happening is that
What are the NTP stats? In otherwords, how stable is the system clock.
> Tomcat (or the
> Java that Tomcat runs on) may be keeping an internal clock, perhaps
It all boils down to:
public static native long currentTimeMillis();
Even new java.util.Date() ->
public Date() {
this(System.currentTimeMillis());
}
That means all the "time" source in Java, and Tomcat come from the OS.
> using a separate thread as a way to speed up the retrieval of time so
> that it does not have to go to the OS system clock every time it needs
> the current time. And maybe this internal clock is not
> synced with the
> server time until Tomcat (or the JVM) is restarted.
>
> If this is the case, would anyone have an idea of how to force Tomcat
> (or Java) to use the server's system clock every time instead of using
> its own internal clock? We do not care about the performance hit on
> this because this is a low-volume application. Or, if we are
> misunderstanding Tomcat and it actually uses the system clock
> every time
> it needs to get the current time, is there something else we should be
> looking at?
Lets start withm can you add a simple JSP to your web app?
<%=System.currentTimeMillis()%>
Then periodically:
date && date -d "@$(curl -s http://127.0.0.1:8080/date.jsp)" && date
>
> We have researched on the web, checked the Apache mail archives, read
> the Tomcat configuration guide, looked up the Java system options, but
> have not studied the Tomcat source code yet. We did find
> that there is
> a Java Wrapper product out there by Tanuki Software that provides an
> option to use system time or a background thread, which is what caused
> us to wonder if Tomcat might be doing something similar.
>
> For more information on what the Tanuki wrapper does, here is
> an excerpt
> we found on their website
> http://wrapper.tanukisoftware.com/doc/english/prop-use-system-
> time.html:
> "As of Wrapper version 3.1.0, a new timer mechanism was added to the
> Wrapper. This new timer was made the default in Wrapper version 3.2.0.
> Rather than keeping time by querying the system clock, the Wrapper
> creates a background thread which enters a light weight loop and
> increments an internal "tick" counter. Internally all timekeeping has
> been modified to be based on these "ticks". (If the system
> time is being
> used, then the tick count at any particular moment is calculated from
> the system time rather than from the counter.) "
>
> Thanks in advance for any ideas that are shared.
> Richard
--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- -
- Jason Pyeron PD Inc. http://www.pdinc.us -
- Principal Consultant 10 West 24th Street #100 -
- +1 (443) 269-1555 x333 Baltimore, Maryland 21218 -
- -
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
This message is copyright PD Inc, subject to license 20080407P00.