0

これが私のコードです:

private static final DateFormat DATE_FORMAT = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH);
....
private static Date parseIfModifiedSince(HttpServletRequest request) {
    String lastModifiedHeader = "";
    try {
        lastModifiedHeader = request.getHeader(IF_MODIFIED_SINCE);
        return !StringUtils.isEmpty(lastModifiedHeader) ? DATE_FORMAT.parse(lastModifiedHeader) : null;
    } catch (Exception ex) {
        log.warn("Error while parsing If-Modified-Since date: \"" + lastModifiedHeader+"\"", ex);
        return null;
    }
}

時々、例外が表示されます。

WARN ru.planeta.web.res.ResourcesController 2013-03-29 20:16:58,635: Error while parsing If-Modified-Since date: "Fri, 29 Mar 2013 16:16:28 GMT"
java.lang.NumberFormatException: multiple points

コードに問題は見つかりません。私がどうかしましたか、まずいことでもありましたか?

4

2 に答える 2

1

をクラスレベル変数として宣言するSimpleDateFormatと、スレッドセーフではないため、その問題にさらされます。SimpleDateFormatオブジェクトが必要になるたびに新しいオブジェクトを作成し、メソッド内のローカル変数にのみ割り当てることをお勧めします。

于 2013-03-29T17:34:22.963 に答える
0

@Sarath が述べたように、SimpleDateFormatスレッドセーフではありません。FastDateFormat別の解決策は、スレッドセーフなを使用することです。

于 2013-03-29T17:37:29.103 に答える