我在websphere 8.5中有2个集群,在Ejb 3.1无状态bean中有一个frecvent使用的方法。我想使用一个计时器,每小时记录失败和成功计数以及平均执行时间。非常准确并不重要。保持每个集群节点的统计信息的最佳/最快方法是什么:EJB单例,dynacache,具有静态或同步方法的类,AtomicLong?
答案 0 :(得分:0)
我的解决方案是在Postconstruct中使用带有计时器(@Schedule)的EJB Singleton。
@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;
}
}
答案 1 :(得分:-1)
如果您可以使用直接网址访问每个群集。 如何创建一个批处理文件来每小时执行一次。