clusterutils.java
来自「weblogic应用全实例」· Java 代码 · 共 148 行
JAVA
148 行
//定义在包examples.cluster.utils
package examples.cluster.utils;
//引入的类
import java.util.*;
import java.text.NumberFormat;
/**
* 工具类,记录簇的动作 。
* 消息的格式[message : weblogic.system.name].
* 如:addClusterMessage("Hello : cluster1");
*/
public class ClusterUtils {
/* 簇成员的哈希表 */
private Hashtable clusterMembers;
/* 保存异常 */
private int numExceptions = 0;
/* 结果向量 */
private Vector results = new Vector();
/**
* 消息标记
*/
private String token = ":";
/**
* 构造方法
*/
public ClusterUtils(){
clusterMembers = new Hashtable();
}
/**
* 构造方法
* @参数 iterations int 迭代个数
*/
public ClusterUtils(int iterations){
clusterMembers = new Hashtable();
}
/**
* 缺省的格式[message : weblogic.system.name].
* 如:addClusterMessage("Hello : cluster1");
* @参数 message string 消息
*/
public void addClusterMessage(String message){
results.addElement(message);
}
/**
* 允许重设标记,取代 ":"。
* @参数 token String 分割消息的新标记
*/
public void setToken(String token){
this.token = token;
}
public int getIterations(){
return results.size();
}
public int getExceptionCount(){
return numExceptions;
}
public void incrementExceptionCount(){
numExceptions++;
}
/**
* 统计报告
*/
public String processStatistics(){
int invocations = 0;
for(int i=0; i < results.size(); i++){
if (results.elementAt(i) != null) {
invocations++;
StringTokenizer tokens = new StringTokenizer((String)results.elementAt(i), token);
tokens.nextToken();
String clusterName = tokens.nextToken();
clusterName = clusterName.trim();
Cluster cluster = null;
if(!knownCluster(clusterName)){
cluster = new Cluster(clusterName);
}else{
cluster = (Cluster)clusterMembers.get(clusterName);
}
cluster.increment();
clusterMembers.put(clusterName, cluster);
}
}
StringBuffer stats = new StringBuffer("");
if (clusterMembers.isEmpty() | invocations == 0) {
stats.append("No statistics are available.\n");
} else {
Enumeration enum = clusterMembers.keys();
while(enum.hasMoreElements()){
String key = (String)enum.nextElement();
Cluster cluster = (Cluster)clusterMembers.get(key);
stats.append("\"" + key + "\" processed " + cluster.getIncInt()
+ " (" + getPercent(cluster.getIncInt(),invocations) + ") of "
+ invocations + " invocations\n");
}
}
return stats.toString();
}
private boolean knownCluster(String clusterName){
if(clusterMembers.containsKey(clusterName))
return true;
return false;
}
private String getPercent (int top, int bottom){
NumberFormat nf = NumberFormat.getPercentInstance();
return nf.format(new Float( (float)top / (float)bottom) );
}
/**
* 内部类
*/
class Cluster{
String name = null;
int messages = 0;
Cluster(String clusterName){
name = clusterName;
}
public void increment(){
messages++;
}
public String getName(){
return name;
}
public int getIncInt(){
return messages;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?