У меня есть 2 кластера в websphere 8.5 и метод frecvent, используемый в фазе безфактора Ejb 3.1. Я хочу использовать таймер, который регистрирует каждый час счет неудачи и успеха и среднее время выполнения. Не важно быть очень точным. Каков наилучший/самый быстрый способ сохранить статистику для каждого узла кластера: EJB singleton, dynacache, класс со статическими или синхронизированными методами, AtomicLong?лучший способ сохранить статистику для метода EJB для каждого узла кластера
-1
A
ответ
-1
Если вы можете получить доступ к каждому кластеру, используя прямой URL. Как создать пакетный файл для каждого кластера каждый час.
0
Моим решением было использовать EJB Singleton с таймером (@Schedule), запущенным в Postconstruct.
@Singleton
public class NodeStatistics {
private long totalTime = 0;
private int fail = 0;
private int success = 0;
@PostConstruct
@Schedule(hour = "*/1", minute = "0", second = "0", persistent = false)
public void run() {
int count = this.fail + this.success;
long avgTime = 0;
if (count > 0) {
avgTime = this.totalTime/count;
}
logStatistics();
reset();
}
public void addFail(long time) {
this.fail++;
totalTime += time;
}
public void addSuccess(long time) {
this.success++;
totalTime += time;
}
public void reset() {
this.fail = 0;
this.success = 0;
}
}