Форматирование результата oql в VisualVM - PullRequest
0 голосов
/ 15 мая 2018

У меня следующий запрос oql, запущенный на visualvm для дампа кучи, и я хотел бы, чтобы поле creationTime было отформатировано как поле даты и времени (оно хранится как Long).

select { id: s.id.toString(), createdAt: new Date(s.creationTime) }
from org.apache.catalina.session.StandardSession s

Приведенный выше запрос перечисляет следующий вывод (в разрезе)

{
 id = 1010827848,
 createdAt = sun.org.mozilla.javascript.internal.NativeDate@66106135
}
...

Очевидно, что он был «преобразован» в дату, но не отображает ее в удобочитаемом формате. Выполнение toString() для объекта даты приводит к тому, что поле отображается как Invalid Date.

  1. Можно ли отформатировать поле Long как поле даты?
  2. Значение поля id также отключено при запросе с использованием VisualVM. Когда я запрашиваю тот же дамп кучи с помощью Eclipse Analyzer, я вижу правильное значение (BE27C51E8BF185A2FB3AA9164EC0C647). Что может случиться с этим?

1 Ответ

0 голосов
/ 16 мая 2018
  1. Вывод показывает, что вы создаете объект JavaScript Date. Правильная часть вашего OQL должна быть: createdAt: new java.util.Date(s.creationTime)
  2. Известна проблема с полем с именем id. См. Получение значений полей "id" через OQL-запрос VisualVM для получения дополнительной информации. В качестве обходного пути вы можете использовать s["wrapped-object"].getValueOfField("id") вместо s.id.toString()

С учетом вышеуказанных изменений ваш запрос должен быть:

select { id: s["wrapped-object"].getValueOfField("id"),
createdAt: new java.util.Date(s.creationTime).toString() }
from org.apache.catalina.session.StandardSession s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...