Как мне заставить мой Java-объект перестать сбрасывать дату его создания на текущую дату? - PullRequest
0 голосов
/ 07 октября 2010

Это действительно просто, но я не могу понять, почему он сбрасывает дату создания. Я использую простой кэш истечения срока действия на объекте. Если срок его действия истек, я создам новый объект. Если это не так, просто используйте тот, который существует. Однако каждый раз, когда я проверяю дату создания объекта, это текущая дата.

public class MyObjectImpl implements MyObjectInterface {

    private static final long serialVersionUID = -3542728718515350246L; // auto generated from Eclipse...

    public MyObjectImpl() {
        this.creationDate = new Date().getTime();
    }

    public boolean hasExpired(BigInteger millesecondsToExpiration) {
        if (millesecondsToExpiration == null) {
            millesecondsToExpiration = new BigInteger("2592000000"); // 30 Days
        }
        if (getCreationDate() + millesecondsToExpiration.longValue() < new Date().getTime()) {
            return true;
        } else {
            return false;
        }
    }

    private Long creationDate;

    public Long getCreationDate() {
        return this.creationDate;
    }
}

Вот как я это называю:

MyObjectInterface myObject = (MyObjectInterface)session.getAttribute("MY_OBJECT");

if (myObject == null || (myObject != null && myObject.hasExpired(null))) {
    session.setAttribute("MY_OBJECT", new myObjectImpl());
}

Ответы [ 2 ]

3 голосов
/ 07 октября 2010

hasExpired возвращает true для молодых объектов, это неправильное решение:

if (getCreationDate() + millesecondsToExpiration.longValue() < new Date().getTime()) {
        return true;
    } else {
        return false;
    }

Таким образом, вы воссоздаете объект каждый раз.

0 голосов
/ 07 октября 2010

Я думаю, что самый простой ответ заключается в том, что ваш конструктор вызывается, а вы так не думаете.Вы пробовали войти в конструктор?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...