tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jane Muse" <>
Subject RE: Disable class monitoring for reloading container classes
Date Wed, 13 Oct 2010 17:40:05 GMT
Thanks for the java program Chris, I ran it on the version of the O/S where we get the problem
and got results that show a last modified date that differs by one hour when the time changes
due to DST.

Current GMT time (no DST): 2010-10-12 22:53:27 GMT         
 Current local time (with DST): 2010-10-12 15:53:28 PDT     
 File [/Aldon/Aldonls/tomcat20/lib/servlet-api.jar]         
 last modified timestamp: 1231267693000                     
 the file was last modified 55656315 seconds ago            
 last modified as GMT time (no DST): 2009-01-06 18:48:13 GMT
 last modified as local time: 2009-01-06 10:48:13 PST       

Change date to: 03/13/10

java com.aldon.lifetime.permissions.test.TimeChange '/Aldon/Aldonls/tomcat20/lib/servlet-api.jar'

Current GMT time (no DST): 2010-03-13 23:55:24 GMT                                       
Current local time (with DST): 2010-03-13 15:55:24 PST                                   
File [/Aldon/Aldonls/tomcat20/lib/servlet-api.jar]                                       
last modified timestamp: 1231271293000                                                   
the file was last modified 37253231 seconds ago                                          
last modified as GMT time (no DST): 2009-01-06 19:48:13 GMT                              
last modified as local time: 2009-01-06 11:48:13 PST 

IBM has said they'll open a discussion with their development team and try to get a fix out.

Thanks to everyone for all the help.


-----Original Message-----
From: Christopher Schultz [] 
Sent: Tuesday, October 12, 2010 11:08 AM
To: Tomcat Users List
Subject: Re: Disable class monitoring for reloading container classes

Hash: SHA1


On 10/10/2010 9:09 AM, André Warnier wrote:
> What would be really nice, is if someone wrote a quick Java equivalent 
> to the perl script I submitted.

See below. There's actually more code than absolutely necessary, but it's more straightforward
this way.

> Now if you *really* insist, the modified version of the perl program, 
> below, will explicitly use a couple of C functions, themselves using 
> the builtin C structures to get the file's "last modified" time.
> Running C in perl, scary stuff..

Are you submitting an application for an obfuscated C program, here?
Sheesh. What's wrong with a little C code?

Amazing: the C code is shorter than the Java code. *shrug* (apologies for any re-formatting done by my emailer)
- ---------

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimeZone;

public class Time
    public static void main(String[] args)
        throws Exception
        if(args.length < 1)
            System.out.println("Usage: java Time <filename>");

        // GMT current time
        Calendar now = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
        System.out.println("Current GMT time (no DST): "
                           + format(now));

        // local current time
        now = Calendar.getInstance(); // default = local
        System.out.println("Current local time (with DST): "
                           + format(now));

        // File timestamp
        System.out.println("File [" + args[0] + "]");
        File file = new File(args[0]);

        long timestamp = file.lastModified();

        System.out.println("last modified timestamp: " + timestamp);
        System.out.println("the file was last modified "
                           + ((System.currentTimeMillis() - timestamp) /
                           + " seconds ago");
        Calendar tstamp = Calendar.getInstance(TimeZone.getTimeZone("GMT"));

        System.out.println("last modified as GMT time (no DST): "
                           + format(tstamp));

        tstamp = Calendar.getInstance(); // default=local

        System.out.println("last modified as local time: "
                           + format(tstamp));

    public static String format(Calendar c)
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
        //        format.setTimeZone(tz);

        return format.format(c.getTime());

- ------
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <sys/stat.h>

int main(int argc, char *argv[]) {
  time_t now;
  struct tm *gmt;
  struct tm *local;
  struct stat *fileinfo;
  int retval;
  char *filename;

  if(argc < 2) {
    printf("missing filename\n");
    return 1;
  filename = argv[1];

  gmt   = (struct tm*)malloc(sizeof(struct tm));
  local = (struct tm*)malloc(sizeof(struct tm));


  gmtime_r(&now, gmt);
  localtime_r(&now, local);

  /* note: asctime adds a newline */
  printf("System raw timestamp: %ld\n", now);
  printf("Current GMT time (no DST): %s", asctime(gmt));
  printf("Current local time (with DST): %s", asctime(local));

  fileinfo = (struct stat *)malloc(sizeof(struct stat));

  printf("File [%s]:\n", filename);

  if(stat(filename, fileinfo)) {
  } else {
    gmtime_r(&(fileinfo->st_mtime), gmt);
    localtime_r(&(fileinfo->st_mtime), local);

    printf("last modified timestamp: %ld\n", (long)fileinfo->st_mtime);
    printf("the file was last modified %ld seconds ago\n",
           (now - fileinfo->st_mtime));

    printf("last modified as GMT time (no DST): %s", asctime(gmt));
    printf("last modified as local time (with DST): %s", asctime(local));
  return 0;

Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla -


To unsubscribe, e-mail:
For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message