日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
基于JMX監(jiān)控下的JBoss數(shù)據(jù)庫連接池

一、JMX簡介

成都創(chuàng)新互聯(lián)公司是專業(yè)的通山網(wǎng)站建設(shè)公司,通山接單;提供成都網(wǎng)站設(shè)計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行通山網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

JMX(Java Management Extensions,Java管理擴展)是一個為應(yīng)用程序植入管理功能的框架。JMX是一套標(biāo)準(zhǔn)的代理和服務(wù),實際上,用戶可以在任何Java應(yīng)用程序中使用這些代理和服務(wù)實現(xiàn)管理。

Jboss的成功就在于采用了JMX,從零開始、模塊化開發(fā)了Jboss服務(wù)器和容器,實現(xiàn)了模塊化、嵌入式的技術(shù)架構(gòu)。JMX作為集成中心(總線),可以很方便的熱插拔新的模塊和組件。JMX服務(wù)可以通過HTTP、RMI、SNMP等多種協(xié)議進行訪問,使其適合作為一個網(wǎng)絡(luò)管理、監(jiān)控平臺的技術(shù)架構(gòu)。

二、JMX構(gòu)架中的各層及相關(guān)的組件

1.工具層(Instrumentation Level)

(a)MBeans(標(biāo)準(zhǔn)的,動態(tài)的,開放的和模型MBeans)

(b)通知模型:Notification、NotificationListener等類

(c)MBean元數(shù)據(jù)類:Attribute、Opreator等類

2.代理層(Agent Level)

(a)MBean Server

(b)代理服務(wù)。如jboss jmx-console下的HtmlAdaptorServer等。

MBean:是Managed Bean的簡稱。在JMX中MBean代表一個被管理的資源實例,通過MBean中暴露的方法和屬性,外界可以獲取被管理的資源的狀態(tài)和操縱MBean的行為。事實上,MBean就是一個Java Object,同JavaBean模型一樣,外界使用自醒和反射來獲取Object的值和調(diào)用Object的方法,只是MBean更為復(fù)雜和高級一些。

MBeanServer:MBean生存在一個MBeanServer中。MBeanServer管理這些MBean,并且代理外界對它們的訪問。并且MBeanServer提供了一種注冊機制,是的外界可以通過名字來得到相應(yīng)的MBean實例。

JMX Agent:Agent只是一個Java進程,它包括這個MBeanServer和一系列附加的MbeanService。當(dāng)然這些Service也是通過MBean的形式來發(fā)布。

Protocol Adapters and Connectors

JMX Agent通過各種各樣的Adapter和Connector來與外界(JVM之外)進行通信。同樣外界(JVM之外)也必須通過某個Adapter和Connector來向JMX Agent發(fā)送管理或控制請求。

Adapter和Connector的區(qū)別在于:Adapter是使用某種Internet協(xié)議來與JMX Agent獲得聯(lián)系,Agent端會有一個對象(Adapter)來處理有關(guān)協(xié)議的細節(jié)。比如SNMP Adapter和HTTP Adapter。而Connector則是使用類似RPC的方式來訪問Agent,在Agent端和客戶端都必須有這樣一個對象來處理相應(yīng)的請求與應(yīng)答。比如RMI Connector。

JMX Agent可以帶有任意多個Adapter,因此可以使用多種不同的方式訪問Agent。#p#

三、監(jiān)控jboss數(shù)據(jù)庫連接池的實現(xiàn)

TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=#999999 border=1>

import java.util.Iterator; 
 
import java.util.Properties;

import java.util.Set;

import javax.management.MBeanInfo;

import javax.management.MBeanOperationInfo;

import javax.management.MBeanParameterInfo;

import javax.management.ObjectInstance;

import javax.management.ObjectName;

import javax.naming.InitialContext;

import org.jboss.jmx.adaptor.rmi.RMIAdaptor;

public class DataSourceManger {

public static void main(String[] args) {

// TODO 自動生成方法存根

try {

// Get RMIAdaptor Object

Properties pro = new Properties();

pro.setProperty("java.naming.factory.initial",

"org.jnp.interfaces.NamingContextFactory");

pro.setProperty("java.naming.provider.url", "jnp://localhost:1099");

pro.setProperty("java.naming.factory.url.pkgs",

"org.jboss.naming:org.jnp.interfaces");

InitialContext ic = new InitialContext(pro);

RMIAdaptor server = (RMIAdaptor) ic.lookup("jmx/rmi/RMIAdaptor");

ObjectName name = new ObjectName(

"jboss.jca:name=jdbc/baosigpo,service=ManagedConnectionPool");

ObjectName lname = new ObjectName(

"jboss.jca:name=jdbc/baosigpo,service=LocalTxCM");

String AvailableConnectionCount = server.getAttribute(name,

"AvailableConnectionCount").toString();

System.out.println("===========avlide============"

+ AvailableConnectionCount);

String InUseConnectionCount = server.getAttribute(name,

"InUseConnectionCount").toString();

System.out.println("===========InUseConnectionCount============"

+ InUseConnectionCount);

String ConnectionCreatedCount = server.getAttribute(name,

"ConnectionCreatedCount").toString();

System.out.println("===========ConnectionCreatedCount============"

+ ConnectionCreatedCount);

String ConnectionDestroyedCount = server.getAttribute(name,

"ConnectionDestroyedCount").toString();

System.out

.println("===========ConnectionDestroyedCount============"

+ ConnectionDestroyedCount);

ConnectionDestroyedCount = server.getAttribute(name,

"ConnectionDestroyedCount").toString();

System.out

.println("===========ConnectionDestroyedCount============"

+ ConnectionDestroyedCount);

String[] argTypes = new String[0];

int i=0;

i=Integer.parseInt(AvailableConnectionCount);

Object opReturn=null;

if(i<1) {//監(jiān)控可用連接數(shù)。

StringBuffer sb=new StringBuffer();

sb.append("oper before DataSource Pool info : \r\n");

sb.append("AvailableConnectionCount="

+ AvailableConnectionCount);

sb.append("InUseConnectionCount="+InUseConnectionCount);

sb.append("ConnectionCreatedCount="

+ ConnectionCreatedCount);

sb.append("ConnectionDestroyedCount="

+ ConnectionDestroyedCount);

sb.append("\r\n");

//opReturn=server.invoke(name,"flush",argTypes,argTypes);

/*調(diào)用mbean的方法釋放連接 begin 本實現(xiàn)方法對應(yīng)jboss3.2.3

對于jboss4以后的版本只需調(diào)用

//opReturn=server.invoke(name,"flush",argTypes,argTypes);

**/

opReturn=server.invoke(name,"stop",argTypes,argTypes);

opReturn=server.invoke(name,"start",argTypes,argTypes);

opReturn=server.invoke(lname,"stop",argTypes,argTypes);

opReturn=server.invoke(lname,"start",argTypes,argTypes);

/*調(diào)用mbean的方法釋放連接 end **/

AvailableConnectionCount=server.getAttribute(name,

"AvailableConnectionCount").toString();

InUseConnectionCount=server.getAttribute(name,

"InUseConnectionCount").toString();

ConnectionCreatedCount=server.getAttribute(name,

"ConnectionCreatedCount").toString();

ConnectionDestroyedCount =server.getAttribute(name,

"ConnectionDestroyedCount").toString();

ConnectionDestroyedCount=server.getAttribute(name,

"ConnectionDestroyedCount").toString();

sb.append("oper afer DataSource Pool info :\r\n");

sb.append("AvailableConnectionCount="

+ AvailableConnectionCount);

sb.append("InUseConnectionCount="+InUseConnectionCount);

sb.append("ConnectionCreatedCount="

+ ConnectionCreatedCount);

sb.append("ConnectionDestroyedCount="

+ ConnectionDestroyedCount);

//writeLog(sb.toString()); 操作日志信息

System.out.println("===========op SUCCESS============");

}

}catch(Exception ex){

ex.printStackTrace();

}

}

}

分享文章:基于JMX監(jiān)控下的JBoss數(shù)據(jù)庫連接池
文章路徑:http://www.dlmjj.cn/article/dpgcjop.html