2016-03-14 4 views
-1

У меня есть 2 кластера в websphere 8.5 и метод frecvent, используемый в фазе безфактора Ejb 3.1. Я хочу использовать таймер, который регистрирует каждый час счет неудачи и успеха и среднее время выполнения. Не важно быть очень точным. Каков наилучший/самый быстрый способ сохранить статистику для каждого узла кластера: EJB singleton, dynacache, класс со статическими или синхронизированными методами, AtomicLong?лучший способ сохранить статистику для метода EJB для каждого узла кластера

ответ

-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; 
} 
}