<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                JMX是一種JAVA的正式規范,它主要目的是讓程序有被管理的功能,那么怎么理解所謂的“被管理”呢?試想你開發了一個軟件(如WEB網站),它是在24小時不間斷運行的,那么你可能會想要“監控”這個軟件的運行情況,比如收到了多少數據,有多少人登錄等等。或者你又想“配置”這個軟件,比如現在訪問人數比較多,你想把數據連接池設置得大一些。 當然,你也許會專門為這些管理來開發軟件,但如果你借助JMX,則會發現創建這樣的管理程序是如此簡單。因為你無需為管理程序來開發界面,已經有通用的JMX管理軟件,如MC4J,或者是用一般都附帶提供的HTML網頁來管理,你要做的僅僅是將自己要被管理和監控類的按照JMX規范修改一下即可。 中間件軟件WebLogic的管理頁面就是基于JMX開發的,而JBoss則整個系統都基于JMX構架。 1、下載JAR包,jdmkrt.jar 2、核心JDMK代碼 ~~~ package com.redhorse.jmx; import java.lang.management.ManagementFactory; import java.util.Map; import java.util.Set; import javax.management.MBeanServer; import javax.management.ObjectName; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Controller; import com.sun.jdmk.comm.AuthInfo; import com.sun.jdmk.comm.HtmlAdaptorServer; @Controller public abstract class JmxAgent implements InitializingBean, DisposableBean { private final Logger log = Logger.getLogger(getClass()); private HtmlAdaptorServer adapter = null; public abstract Integer getJmxHtmlAdapterPort(); public abstract String getJmxHtmlAdapterName(); public abstract String getUserName(); public abstract String getPassword(); public abstract Map<String, Object> getMBean(); private void create() throws Exception { MBeanServer server = ManagementFactory.getPlatformMBeanServer(); Map<String, Object> mbean = getMBean(); if (null != mbean && !mbean.isEmpty()) { Set<Map.Entry<String, Object>> set = mbean.entrySet(); for (Map.Entry<String, Object> en : set) { ObjectName constantsName = new ObjectName(en.getKey() + ":name=" + en.getKey()); server.registerMBean(en.getValue(), constantsName); } } ObjectName adapterName = new ObjectName( getJmxHtmlAdapterName() + ":name=htmladapter,port=" + getJmxHtmlAdapterPort()); HtmlAdaptorServer adapter = new HtmlAdaptorServer(); adapter.setPort(getJmxHtmlAdapterPort()); AuthInfo login = new AuthInfo(); login.setLogin(StringUtils.isBlank(getUserName()) ? "" : getUserName()); login.setPassword(StringUtils.isBlank(getPassword()) ? "" : getPassword()); adapter.addUserAuthenticationInfo(login); server.registerMBean(adapter, adapterName); adapter.start(); this.adapter = adapter; log.info("Starting JMX Management in port " + getJmxHtmlAdapterPort() + "."); } public void afterPropertiesSet() throws Exception { create(); } public void destroy() throws Exception { if (adapter != null) { adapter.stop(); } log.info("Stoped JMX Management in port " + getJmxHtmlAdapterPort() + "."); } } ~~~ 核心代碼2,配置HTML訪問端口、用戶、密碼 ~~~ package com.redhorse.jmx; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import java.util.Properties; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import com.redhorse.service.RuleService; @Controller public class CoreJmxAgent extends JmxAgent { private final Logger logger = Logger.getLogger(getClass()); @Autowired private JobMBean jobMBean; public JobMBean getJobMBean() { return jobMBean; } public void setJobMBean(JobMBean jobMBean) { this.jobMBean = jobMBean; } @Override public String getJmxHtmlAdapterName() { return "com.redhorse.jmx"; } @Override public Map<String, Object> getMBean() { Map<String, Object> map = new HashMap<String, Object>(); map.put("com.redhorse.jmx.dojob", getJobMBean()); return map; } @Override public String getUserName() { return getRuleByName("jmx.username"); } @Override public String getPassword() { return getRuleByName("jmx.password"); } @Override public Integer getJmxHtmlAdapterPort() { return Integer.parseInt(getRuleByName("jmx.port")); } /** * 讀取properties資源文件 * * @author: Gao Peng * @date: 2015年11月27日 下午4:45:29 * @param: @param * name * @param: @return * @return: String */ private String getRuleByName(String name) { String rule = ""; Properties prop = new Properties(); InputStream in = RuleService.class.getResourceAsStream("/rule.properties"); try { prop.load(in); rule = prop.getProperty(name); } catch (Exception e) { logger.error("警告!!!警告!!!【JMX初始化】,讀取到properties配置文件出錯!!!!!!", e); return ""; } return rule; } } ~~~ 3、業務代碼 ~~~ package com.redhorse.jmx; public interface JobMBean { public void test(); public void updateMobileRule(); } ~~~ ~~~ package com.redhorse.jmx; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import com.redhorse.service.RuleService; @Controller public class Job implements JobMBean { private final static Logger log = Logger.getLogger(Job.class.getName()); @Autowired private RuleService ruleService; @Override public void test() { log.info("【JMX任務執行】 test Success"); } @Override public void updateMobileRule() { log.info("【JMX任務執行】updateMobileRule begin ...... "); ruleService.putMobileToEncache(); log.info("【JMX任務執行】 updateMobileRule end "); } } ~~~ 配置文件 ~~~ jmx.username = daxiang jmx.password = daxiang!@# jmx.port = 18887 ~~~ 目錄結構圖 ![這里寫圖片描述](https://box.kancloud.cn/2016-03-15_56e7afc2b16e5.jpg "")
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看