package org.springside.examples.showcase.jmx.client;
import java.util.HashMap;
import java.util.Map;
import org.apache.struts2.convention.annotation.Namespace;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springside.modules.utils.web.struts2.Struts2Utils;
import com.opensymphony.xwork2.ActionSupport;
/**
* JMX客户端演示的Action.
*
* @author ben
* @author calvin
*/
@Namespace("/jmx")
public class JmxClientAction extends ActionSupport {
private static final long serialVersionUID = -12923147736849709L;
private static Logger logger = LoggerFactory.getLogger(JmxClientAction.class);
@Autowired
private JmxClientService jmxClientService;
//-- 页面属性 --//
private String nodeName;
private boolean notificationMailEnabled;
private boolean traceStarted;
/**
* 默认函数,显示服务器配置及运行情况.
*/
@Override
public String execute() {
nodeName = jmxClientService.getNodeName();
notificationMailEnabled = jmxClientService.isNotificationMailEnabled();
traceStarted = jmxClientService.getTraceStatus();
return SUCCESS;
}
//-- 系统配置 (基于MBean) --//
/**
* 修改系统配置的Ajax请求.
*/
public String saveConfig() {
try {
jmxClientService.setNodeName(nodeName);
jmxClientService.setNotificationMailEnabled(notificationMailEnabled);
Struts2Utils.renderText("保存配置成功.");
} catch (Exception e) {
Struts2Utils.renderText("保存配置失败.");
logger.error("保存配置失败.", e);
}
return null;
}
/**
* 获取最新系统配置, 返回JSON字符串.
*/
@SuppressWarnings("unchecked")
public String refreshConfig() {
Map map = new HashMap();
try {
nodeName = jmxClientService.getNodeName();
notificationMailEnabled = jmxClientService.isNotificationMailEnabled();
map.put("nodeName", nodeName);
map.put("notificationMailEnabled", String.valueOf(notificationMailEnabled));
map.put("message", "刷新配置成功.");
} catch (Exception e) {
map.put("message", "刷新配置失败.");
logger.error(e.getMessage(), e);
}
Struts2Utils.renderJson(map);
return null;
}
//-- Trace控制(直接读取属性/调用方法) --//
/**
* 开始Trace.
*/
public void startTrace() {
jmxClientService.startTrace();
}
/**
* 停止Trace.
*/
public void stopTrace() {
jmxClientService.stopTrace();
}
//-- 页面属性访问函数 --//
public String getNodeName() {
return nodeName;
}
public void setNodeName(String nodeName) {
this.nodeName = nodeName;
}
public boolean isNotificationMailEnabled() {
return notificationMailEnabled;
}
public void setNotificationMailEnabled(boolean notificationMailEnabled) {
this.notificationMailEnabled = notificationMailEnabled;
}
public boolean isTraceStarted() {
return traceStarted;
}
}