<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
|
<%
|
String path = request.getContextPath();
|
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
|
%>
|
<%@taglib uri="/struts-tags" prefix="s" %>
|
<!DOCTYPE HTML>
|
<html lang="en">
|
<head>
|
<base href="<%=basePath%>">
|
<title><s:text name="Thread_monitor_manage"/></title> <!-- 线程监控管理 -->
|
<meta charset="UTF-8">
|
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE10" />
|
<link href="css/basic.css" type="text/css" rel="stylesheet" />
|
<link rel="stylesheet" type="text/css" href="css/query.css">
|
<link rel="stylesheet" type="text/css" href="css/popup-tbl.css">
|
<link rel="stylesheet" type="text/css" href="css/confirm.css">
|
<link rel="stylesheet" type="text/css" href="css/nocontent.css">
|
<link rel="stylesheet" type="text/css" href="jqueryui/jquery-ui.css">
|
<style type="text/css">
|
body {
|
overflow-y:hidden;
|
}
|
.tbl-body {
|
-webkit-user-select: none;
|
-moz-user-select: none;
|
-ms-user-select: none;
|
-o-user-select: none;
|
user-select: none;
|
}
|
.tbl-body img{
|
cursor: pointer;
|
}
|
.tbl-body img:hover {
|
filter:alpha(opacity=80); /*IE滤镜,透明度50%*/
|
-moz-opacity:0.8; /*Firefox私有,透明度50%*/
|
opacity:0.8; /*其他,透明度50%*/
|
}
|
|
.myconfirm .confirm-content input{
|
border: 1px solid #bbb;
|
height: 26px;
|
margin-left: 8px;
|
}
|
</style>
|
</head>
|
<body>
|
<!--头部内容开始-->
|
<jsp:include page="Top.jsp" flush="true"/>
|
<!--头部内容结束-->
|
<!--导航开始-->
|
<jsp:include page="nav.jsp" flush="true"/>
|
<!--导航结束-->
|
<div id="main">
|
<!-- 查询条件开始 -->
|
<div class="query-list">
|
<div class="no-body"><a href="javascript:;">线程监控管理</a></div>
|
<!-- 查询条件内容开始 -->
|
<div class="query-body"></div>
|
<!-- 查询条件内容结束 -->
|
</div>
|
<!-- 表格内容 -->
|
<div class="tbl-header"></div>
|
<div class="tbl-body"></div>
|
</div>
|
<!-- 弹出框设置 -->
|
<div class="popup">
|
<div class="popup-title"><span><s:text name="Thread"/><s:text name="Set_up"/><!-- 线程设置 --></span> <a href="javascript:;" class="close">X</a></div>
|
<div class="popup-content">
|
<div class="popup-tbl">
|
<input type="hidden" id="progress-key" >
|
<table>
|
<tbody>
|
<tr>
|
<th><s:text name="Thread"/><s:text name="Name"/>:</th> <!-- 线程名称 -->
|
<th><s:text name="Service"/><s:text name="Name"/>:</th> <!-- 服务名称 -->
|
</tr>
|
<tr>
|
<td><input type="text" class="progress-name"></td>
|
<td><input type="text" readonly="readonly" class="program-name"></td>
|
</tr>
|
<tr>
|
<th><s:text name="Timeout"/><s:text name="Time"/>(1-3600s):</th> <!-- 超时时间 -->
|
<th><s:text name="Run"/><s:text name="Time"/>:</th> <!-- 运行时间 -->
|
</tr>
|
<tr>
|
<td><input type="text" class="timeout-time"></td>
|
<td><input type="text" readonly="readonly" class="run-time"></td>
|
</tr>
|
</tbody>
|
</table>
|
</div>
|
</div>
|
<div class="popup-footer">
|
<input type="button" name="" id="btn_ensure" value="<s:text name='Determine'/>" > <!-- 确定 -->
|
<input type="button" name="" id="btn_cancel" value="<s:text name='Cancel'/>" class="close"> <!-- 取消 -->
|
</div>
|
</div>
|
<script type="text/javascript" src="js/buildNav.js"></script>
|
<script type="text/javascript" src="js/query.js"></script>
|
<script type="text/javascript" src="js/createTab.js"></script>
|
<script type="text/javascript" src="js/popup.js"></script>
|
<script type="text/javascript" src="js/myConfirm.js"></script>
|
<script type="text/javascript" src="js/nocontent.js"></script>
|
<script type="text/javascript" src="js/rightmenu.js"></script>
|
<script type="text/javascript">
|
var allstate = new Array();
|
|
var arrTh = new Array();
|
var arrTd = new Array();
|
var start_on = '<img src="image/start_on.gif" title="正在运行中" class="start"/>';
|
var start_off = '<img src="image/start_off.gif" title="停止运行中" class="start"/>';
|
var start_wait = '<img src="image/start_wait.gif" title="暂不运行" class="start-wait"/>';
|
//arrTh = ['编号','线程名称', '服务名称', '运行时间', '超时时间(s)', '线程状态', '操作'];
|
arrTh = ['<s:text name="Number"/>', '进程ID','<s:text name="Thread"/><s:text name="Name"/>','服务版本号','<s:text name="Service"/><s:text name="Name"/>', '<s:text name="Run"/><s:text name="Time"/>','线程启动时间', '<s:text name="Timeout"/><s:text name="Time"/>(s)', '<s:text name="Thread"/><s:text name="Status"/>', '<s:text name="Operation"/>'];
|
$(function() {
|
/* arrTd = [
|
'线程名称', '服务名称', '运行时间', '超时时间', start_on,
|
'线程名称', '服务名称', '运行时间', '超时时间', start_off,
|
'线程名称', '服务名称', '运行时间', '超时时间', start_wait
|
]; */
|
createFullTbl($('.tbl-header'), $('.tbl-body'), arrTh, arrTd);
|
});
|
|
// 点击表格的图标触发事件
|
$(function() {
|
// 点击正在运行图标
|
$('.tbl-body').on('click', 'table img.start', function() {
|
var tr_index = $(this).parent().parent().index();
|
var obj = allstate[tr_index];
|
//var cont = '确定禁用"'+obj.ServerName+'"服务吗?<input type="hidden" class="servername" value="'+obj.ServerName+'"/>';
|
var cont = '<s:text name="Determine"/><s:text name="Disable"/>"'+obj.ServerName+'"<s:text name="Service"/><s:text name="Ma"/>?<input type="hidden" class="servername" value="'+obj.ServerName+'"/>';
|
myConfirm.show({content: cont, class: 'start-on'});
|
});
|
|
// 点击确定禁用
|
myConfirm.confirm.on('click', '.start-on', function() {
|
var servername = myConfirm.confirm.find('.servername').val();
|
//alert(servername);
|
|
updateState({
|
ServerName:servername,
|
ServerFlag:2,
|
});
|
//myConfirm.hide();
|
//noContent.showNoContent('禁用成功!!!');
|
});
|
|
// 点击未启用图标
|
$('.tbl-body').on('click', 'table img.start-wait', function() {
|
var tr_index = $(this).parent().parent().index();
|
var obj = allstate[tr_index];
|
//var cont = '确定启用"'+obj.ServerName+'"服务吗?<input type="hidden" class="servername" value="'+obj.ServerName+'"/>';
|
var cont = '<s:text name="Determine"/><s:text name="Using"/>"'+obj.ServerName+'"<s:text name="Service"/><s:text name="Ma"/>?<input type="hidden" class="servername" value="'+obj.ServerName+'"/>';
|
myConfirm.show({content: cont, class: 'start-wait'});
|
});
|
|
// 点击确定启用
|
myConfirm.confirm.on('click', '.start-wait', function() {
|
var servername = myConfirm.confirm.find('.servername').val();
|
updateState({
|
ServerName:servername,
|
ServerFlag:0,
|
});
|
});
|
|
// 点击重启图标
|
$('.tbl-body').on('click', 'table img.restart', function() {
|
var tr_index = $(this).parent().parent().index();
|
var obj = allstate[tr_index];
|
//var cont = '确定重启"'+obj.ServerName+'"服务吗?<input type="hidden" class="servername" value="'+obj.ServerName+'"/>';
|
//var cont = '<s:text name="Determine"/><s:text name="Restart"/>"'+obj.ServerName+'"<s:text name="Service"/><s:text name="Ma"/>?<input type="hidden" class="servername" value="'+obj.ServerName+'"/>';
|
var cont = '密码:<input type="password" placeholder="请输入重启线程密码"><input type="hidden" value="'+tr_index+'">';
|
myConfirm.show({content: cont, class: 'true-pwd'});
|
});
|
|
myConfirm.confirm.on('click', '.true-pwd', function() {
|
var pwd = $('.myconfirm .confirm-content input[type="password"]').val();
|
//console.info("####"+pwd+"####");
|
if(pwd == undefined || pwd.length == 0){
|
noContent.showNoContent('请输入重启线程密码!');
|
return;
|
}
|
var tr_index = $('.myconfirm .confirm-content input[type="hidden"]').val();
|
var obj = allstate[tr_index];
|
var cont = '';
|
$.ajax({
|
type: "post",
|
url: "Process_surveyAction!judgeRestart",
|
async:true,
|
dataType:'text',
|
data:"json="+pwd,
|
success: function(data){
|
//console.info(data);
|
data = eval('('+data+')');
|
var model = eval('('+data.result+')');
|
if(model.code ==1){
|
cont = '密码输入正确!<br><s:text name="Determine"/><s:text name="Restart"/>"'+obj.ServerName+'"<s:text name="Service"/><s:text name="Ma"/>?<input type="hidden" class="servername" value="'+obj.ServerName+'"/>';
|
myConfirm.show({content: cont, class: 'restart'});
|
}else{
|
noContent.showNoContent('密码输入错误!');
|
}
|
},
|
error:function(e){
|
//console.info(e);
|
noContent.showNoContent('密码验证失败,请检查网络连接!');
|
}
|
});
|
});
|
|
// 点击确定重启
|
myConfirm.confirm.on('click', '.restart', function() {
|
var servername = myConfirm.confirm.find('.servername').val();
|
updateState({
|
ServerName:servername,
|
ServerFlag:0,
|
});
|
});
|
|
// 点击表格显示popup弹出框修改线程名称和超时时间
|
$('.tbl-body').on('dblclick', 'table tbody tr', function() {
|
var td_index = $(this).index();
|
var obj = allstate[td_index];
|
$('#progress-key').val(obj.num);
|
$('.popup .progress-name').val(obj.ProcessName_CN); // 线程名称
|
$('.popup .program-name').val(obj.ServerName); // 服务名称
|
$('.popup .run-time').val(obj.ProcessTime); // 运行时间
|
$('.popup .timeout-time').val(obj.OutTime); // 超时时间
|
$('.popup .timeout-time').attr('kk',obj.OutTime);
|
popup.showPopup();
|
});
|
|
$('.popup .timeout-time').blur(function(){
|
var _value = $(this).val();
|
var reg = /^[0-9]*[1-9][0-9]*$/;
|
if(reg.test(_value) && _value < 3600){
|
$(this).attr('kk',_value);
|
}else{
|
$(this).val($(this).attr('kk'));
|
}
|
});
|
});
|
|
searchAllServer();
|
setInterval(function(){
|
searchAllServer();
|
}, 5000);
|
|
/**
|
查询所有的监控线程
|
*/
|
function searchAllServer(){
|
arrTd = new Array();
|
$.ajax({
|
type: "post",
|
url: "Process_surveyAction!searchAll",
|
async:true,
|
dataType:'text',
|
data:null,
|
success: function(data){
|
data = eval('('+data+')');
|
var model = eval('('+data.result+')');
|
allstate = model.data;
|
//console.info(model);
|
if(model.code ==1){
|
for(var i=0;i<model.data.length;i++){
|
arrTd.push(i+1); //编号
|
arrTd.push(model.data[i].ProcessId); // 线程ID
|
arrTd.push(model.data[i].ProcessName_CN); //线程名称
|
arrTd.push(model.data[i].ProcessVersion); //服务版本号
|
arrTd.push(model.data[i].ServerName); //服务名称
|
arrTd.push(model.data[i].ProcessTime); //运行时间
|
arrTd.push(model.data[i].Process_starttime);//线程启动时间
|
arrTd.push(model.data[i].OutTime); //超时时间
|
checkProgress(model.data[i]);
|
arrTd.push(getThreadState(model.data[i].ServerFlag)); //线程状态
|
if(model.data[i].ServerName == "BMS_FBSDEV_LISTEN"){
|
arrTd.push('');
|
}else{
|
arrTd.push(checkRestartType(model.data[i]));
|
}
|
}
|
}
|
createFullTbl($('.tbl-header'), $('.tbl-body'), arrTh, arrTd);
|
},
|
error:function(){
|
|
}
|
});
|
}
|
|
//获取线程的运行状态
|
function getThreadState(flag){
|
var str = "";
|
switch(flag){
|
case 0:str="停止";break;
|
case 1:str="正在运行";break;
|
case 2:str="禁用";break;
|
default:str="";
|
}
|
return str;
|
}
|
|
//修改服务的状态
|
function updateState(temp){
|
loading.showLoading($("#main"));
|
$.ajax({
|
type: "post",
|
url: "Process_surveyAction!updateFlag",
|
async:true,
|
dataType:'text',
|
data:"json="+JSON.stringify(temp),
|
success: function(data){
|
data = eval('('+data+')');
|
var model = eval('('+data.result+')');
|
//console.info(model);
|
if(model.code ==1){
|
//noContent.showNoContent("修改成功");
|
noContent.showNoContent("<s:text name='Chage_Success'/>");
|
searchAllServer();
|
}else{
|
//noContent.showNoContent("修改失败");
|
noContent.showNoContent("<s:text name='Chage_failed'/>");
|
}
|
loading.hideLoading($("#main"));
|
popup.hidePopup();
|
myConfirm.hide();
|
},
|
error:function(){
|
//noContent.showNoContent("修改失败");
|
noContent.showNoContent("<s:text name='Chage_failed'/>");
|
loading.hideLoading($("#main"));
|
myConfirm.hide();
|
}
|
});
|
}
|
|
|
$('#btn_ensure').click(function(){
|
loading.showLoading($("#main"));
|
$.ajax({
|
type: "post",
|
url: "Process_surveyAction!updateAll",
|
async:true,
|
dataType:'text',
|
data:"json="+JSON.stringify({
|
num:$('#progress-key').val(),
|
note:$('.popup .progress-name').val(),
|
OutTime:$('.popup .timeout-time').val(),
|
}),
|
success: function(data){
|
data = eval('('+data+')');
|
var model = eval('('+data.result+')');
|
if(model.code ==1){
|
//noContent.showNoContent("修改成功");
|
noContent.showNoContent("<s:text name='Chage_Success'/>");
|
searchAllServer();
|
}else{
|
//noContent.showNoContent("修改失败");
|
noContent.showNoContent("<s:text name='Chage_failed'/>");
|
}
|
loading.hideLoading($("#main"));
|
popup.hidePopup();
|
},
|
error:function(){
|
//noContent.showNoContent("修改失败");
|
noContent.showNoContent("<s:text name='Chage_failed'/>");
|
loading.hideLoading($("#main"));
|
popup.hidePopup();
|
}
|
});
|
});
|
|
//判断线程的运行状况
|
function checkProgress(temp){
|
var flag = 1;
|
if(temp.ServerFlag == 2){
|
flag = 2;
|
}else if(temp.ServerFlag == 0){
|
flag = 0;
|
//console.info("已暂停..............");
|
}else{
|
flag = checkTimeOut(temp);
|
}
|
temp.ServerFlag = flag;
|
switch(flag){
|
case 0:return start_off;
|
case 1:return start_on;
|
case 2:return start_wait;
|
default:return "";
|
}
|
}
|
|
// 判断重启的类型
|
function checkRestartType(temp) {
|
//var _restart = '<img src="image/restart.gif" title="重启线程" class="restart"/>';
|
var text = "<s:text name='Restart'/><s:text name='Thread'/>";
|
var _restart = '<img src="image/restart.gif" title="'+text+'" class="restart"/>';
|
|
if(temp.ServerFlag == 2) {
|
_restart = '';
|
}
|
|
return _restart;
|
}
|
</script>
|
</body>
|
</html>
|