/* * Copyright 2011 Alibaba.com All right reserved. This software is the * confidential and proprietary information of Alibaba.com ("Confidential * Information"). You shall not disclose such Confidential Information and shall * use it only in accordance with the terms of the license agreement you entered * into with Alibaba.com. */ package com.alibaba.dubbo.governance.web.home.module.screen; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.Map; import java.util.regex.Pattern; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import com.alibaba.dubbo.common.status.Status.Level; import com.alibaba.dubbo.common.status.StatusChecker; import com.alibaba.dubbo.registry.common.StatusManager; /** * @author tony.chenl */ public class Status{ @Autowired private HttpServletResponse response; public void execute(Map<String,Object> context) throws Exception { //FIXME cache监控存在性能问题 汇总页面去掉 Map<String, com.alibaba.dubbo.common.status.Status> statuses = StatusManager.getInstance().getStatusList(new String[]{"cache"}); com.alibaba.dubbo.common.status.Status status = StatusManager.getInstance().getStatusSummary(statuses); Level level = status.getLevel(); if (!com.alibaba.dubbo.common.status.Status.Level.OK.equals(level)) { context.put("message", level + new SimpleDateFormat(" [yyyy-MM-dd HH:mm:ss] ").format(new Date()) + filterOK(status.getMessage())); } else { context.put("message", level.toString()); } PrintWriter writer = response.getWriter(); writer.print(context.get("message").toString()); writer.flush(); } private static final Pattern OK_PATTERN = Pattern.compile("o(k)", Pattern.CASE_INSENSITIVE); public static String filterOK(String message) { if (message == null) return ""; // 避免ok关键字,用数字0代替字母o return OK_PATTERN.matcher(message).replaceAll("0$1"); } public void setStatusHandlers(Collection<StatusChecker> statusHandlers) { StatusManager.getInstance().addStatusHandlers(statusHandlers); } }