下面列出了怎么用javax.management.openmbean.TabularDataSupport的API类实例代码及写法,或者点击链接到github查看源代码。
/** */
@Test
public void testCachesView() throws Exception {
Set<String> cacheNames = new HashSet<>(Arrays.asList("cache-1", "cache-2"));
for (String name : cacheNames)
ignite.createCache(name);
TabularDataSupport data = systemView(CACHES_VIEW);
assertEquals(ignite.context().cache().cacheDescriptors().size(), data.size());
for (int i = 0; i < data.size(); i++) {
CompositeData row = data.get(new Object[] {i});
cacheNames.remove(row.get("cacheName"));
}
assertTrue(cacheNames.toString(), cacheNames.isEmpty());
}
/** */
@Test
public void testCacheGroupsView() throws Exception {
Set<String> grpNames = new HashSet<>(Arrays.asList("grp-1", "grp-2"));
for (String grpName : grpNames)
ignite.createCache(new CacheConfiguration<>("cache-" + grpName).setGroupName(grpName));
TabularDataSupport grps = systemView(CACHE_GRPS_VIEW);
assertEquals(ignite.context().cache().cacheGroupDescriptors().size(), grps.size());
for (Map.Entry entry : grps.entrySet()) {
CompositeData row = (CompositeData)entry.getValue();
grpNames.remove(row.get("cacheGroupName"));
}
assertTrue(grpNames.toString(), grpNames.isEmpty());
}
/** */
@Test
public void testServices() throws Exception {
ServiceConfiguration srvcCfg = new ServiceConfiguration();
srvcCfg.setName("service");
srvcCfg.setMaxPerNodeCount(1);
srvcCfg.setService(new DummyService());
ignite.services().deploy(srvcCfg);
TabularDataSupport srvs = systemView(SVCS_VIEW);
assertEquals(ignite.context().service().serviceDescriptors().size(), srvs.size());
CompositeData sysView = srvs.get(new Object[] {0});
assertEquals(srvcCfg.getName(), sysView.get("name"));
assertEquals(srvcCfg.getMaxPerNodeCount(), sysView.get("maxPerNodeCount"));
assertEquals(DummyService.class.getName(), sysView.get("serviceClass"));
}
/** */
private void checkContinuousQueryView(IgniteEx origNode, IgniteEx checkNode) {
TabularDataSupport qrys = systemView(checkNode, CQ_SYS_VIEW);
assertEquals(1, qrys.size());
for (int i = 0; i < qrys.size(); i++) {
CompositeData cq = qrys.get(new Object[] {i});
assertEquals("cache-1", cq.get("cacheName"));
assertEquals(100, cq.get("bufferSize"));
assertEquals(1000L, cq.get("interval"));
assertEquals(origNode.localNode().id().toString(), cq.get("nodeId"));
if (origNode.localNode().id().equals(checkNode.localNode().id()))
assertTrue(cq.get("localListener").toString().startsWith(getClass().getName()));
else
assertNull(cq.get("localListener"));
assertTrue(cq.get("remoteFilter").toString().startsWith(getClass().getName()));
assertNull(cq.get("localTransformedListener"));
assertNull(cq.get("remoteTransformer"));
}
}
public static TabularData tabularData(final String typeName, final String typeDescription, final String[] names, final Object[] values) {
if (names.length == 0) {
return null;
}
final OpenType<?>[] types = new OpenType<?>[names.length];
for (int i = 0; i < types.length; i++) {
types[i] = SimpleType.STRING;
}
try {
final CompositeType ct = new CompositeType(typeName, typeDescription, names, names, types);
final TabularType type = new TabularType(typeName, typeDescription, ct, names);
final TabularDataSupport data = new TabularDataSupport(type);
final CompositeData line = new CompositeDataSupport(ct, names, values);
data.put(line);
return data;
} catch (final OpenDataException e) {
return null;
}
}
private TabularData toTabularData(final String typeName, final String description, final Table table)
{
final OpenType<?>[] types = new OpenType<?>[table.getColumnNames().size()];
for (int i = 0; i < types.length; i++)
{
types[i] = SimpleType.STRING;
}
try
{
final String[] keys = table.getColumnNames().toArray(new String[table.getColumnNames().size()]);
final CompositeType ct = new CompositeType(
typeName, description, keys, keys, types);
final TabularType type = new TabularType(typeName, description, ct, keys);
final TabularDataSupport data = new TabularDataSupport(type);
for (final Collection<String> line : table.getLines())
{
data.put(new CompositeDataSupport(ct, keys, line.toArray(new Object[line.size()])));
}
return data;
}
catch (final OpenDataException e)
{
throw new IllegalArgumentException(e);
}
}
private static TabularData makeTable() throws OpenDataException {
TabularData td = new TabularDataSupport(tt);
for (Map.Entry<String, Integer> entry : stringToValue.entrySet()) {
CompositeData cd = new CompositeDataSupport(
ct,
new String[] {"name", "int"},
new Object[] {entry.getKey(), entry.getValue()});
td.put(cd);
}
return td;
}
@Override
protected void getValueInternal() {
if (jdbcStatManagerClass == null || jdbcStatManager == null) return;
try {
// A work around is to call com.alibaba.druid.stat.JdbcStatManager#getInstance using reflection.
TabularDataSupport tabularData = (TabularDataSupport) jdbcStatManagerClass
.getMethod("getSqlList").invoke(jdbcStatManager, null);
for (Object itemValue: tabularData.values()) {
if (!(itemValue instanceof CompositeData)) {
continue;
}
CompositeData compositeData = (CompositeData) itemValue;
// use sql as tag
String sql = (String) compositeData.get("SQL");
if (!sqlData.containsKey(sql)) {
if (sqlData.size() >= maxSqlSize) {
continue;
}
sqlData.put(sql, new long[DruidMetricsCounters.length + DruidMetricsGauges.length]);
deltaSqlData.put(sql, new long[DruidMetricsCounters.length]);
}
long[] data = sqlData.get(sql);
long[] deltaData = deltaSqlData.get(sql);
int i = 0;
for (; i < DruidMetricsCounters.length; i++) {
long latest = (Long) compositeData.get(DruidMetricsCounters[i]);
deltaData[i] = latest - data[i];
data[i] = latest;
}
for (; i < DruidMetricsCounters.length + DruidMetricsGauges.length; i++) {
data[i] = (Long) compositeData.get(DruidMetricsGauges[i - DruidMetricsCounters.length]);
}
}
} catch (Exception e) {
logger.error("Error during reading druid stats: ", e);
}
}
private static TabularData makeTable() throws OpenDataException {
TabularData td = new TabularDataSupport(tt);
for (Map.Entry<String, Integer> entry : stringToValue.entrySet()) {
CompositeData cd = new CompositeDataSupport(
ct,
new String[] {"name", "int"},
new Object[] {entry.getKey(), entry.getValue()});
td.put(cd);
}
return td;
}
@SuppressWarnings("unchecked")
public TabularData getGlobals() throws OpenDataException {
TabularDataSupport globalsTable = new TabularDataSupport( globalsTableType );
for ( Map.Entry<String, Class< ? >> global : ((Map<String, Class< ? >>) kbase.getGlobals()).entrySet() ) {
Object[] itemValues = {global.getKey(), global.getValue().getName()};
CompositeData result = new CompositeDataSupport( globalsType,
globalsColNames,
itemValues );
globalsTable.put( result );
}
return globalsTable;
}
private static TabularData makeTable() throws OpenDataException {
TabularData td = new TabularDataSupport(tt);
for (Map.Entry<String, Integer> entry : stringToValue.entrySet()) {
CompositeData cd = new CompositeDataSupport(
ct,
new String[] {"name", "int"},
new Object[] {entry.getKey(), entry.getValue()});
td.put(cd);
}
return td;
}
private static TabularData makeTable() throws OpenDataException {
TabularData td = new TabularDataSupport(tt);
for (Map.Entry<String, Integer> entry : stringToValue.entrySet()) {
CompositeData cd = new CompositeDataSupport(
ct,
new String[] {"name", "int"},
new Object[] {entry.getKey(), entry.getValue()});
td.put(cd);
}
return td;
}
public static TabularData toTabularData(JobDetail[] jobDetails) {
TabularData tData = new TabularDataSupport(TABULAR_TYPE);
if (jobDetails != null) {
ArrayList<CompositeData> list = new ArrayList<CompositeData>();
for (JobDetail jobDetail : jobDetails) {
list.add(toCompositeData(jobDetail));
}
tData.putAll(list.toArray(new CompositeData[list.size()]));
}
return tData;
}
public static TabularData toTabularData(List<? extends CronTrigger> triggers) {
TabularData tData = new TabularDataSupport(TABULAR_TYPE);
if (triggers != null) {
ArrayList<CompositeData> list = new ArrayList<CompositeData>();
for (CronTrigger trigger : triggers) {
list.add(toCompositeData(trigger));
}
tData.putAll(list.toArray(new CompositeData[list.size()]));
}
return tData;
}
public static TabularData toTabularData(List<? extends SimpleTrigger> triggers) {
TabularData tData = new TabularDataSupport(TABULAR_TYPE);
if (triggers != null) {
ArrayList<CompositeData> list = new ArrayList<CompositeData>();
for (SimpleTrigger trigger : triggers) {
list.add(toCompositeData(trigger));
}
tData.putAll(list.toArray(new CompositeData[list.size()]));
}
return tData;
}
/**
* @param jobDataMap
* @return TabularData
*/
public static TabularData toTabularData(JobDataMap jobDataMap) {
TabularData tData = new TabularDataSupport(TABULAR_TYPE);
ArrayList<CompositeData> list = new ArrayList<CompositeData>();
Iterator<String> iter = jobDataMap.keySet().iterator();
while (iter.hasNext()) {
String key = iter.next();
list.add(toCompositeData(key, String.valueOf(jobDataMap.get(key))));
}
tData.putAll(list.toArray(new CompositeData[list.size()]));
return tData;
}
/**
* @return array of region statistics
*/
public static TabularData toTabularData(
final List<JobExecutionContext> executingJobs)
throws SchedulerException {
List<CompositeData> list = new ArrayList<CompositeData>();
for (JobExecutionContext executingJob : executingJobs) {
list.add(toCompositeData(executingJob));
}
TabularData td = new TabularDataSupport(TABULAR_TYPE);
td.putAll(list.toArray(new CompositeData[list.size()]));
return td;
}
public static TabularData toTabularData(List<? extends Trigger> triggers) {
TabularData tData = new TabularDataSupport(TABULAR_TYPE);
if (triggers != null) {
ArrayList<CompositeData> list = new ArrayList<CompositeData>();
for (Trigger trigger : triggers) {
list.add(toCompositeData(trigger));
}
tData.putAll(list.toArray(new CompositeData[list.size()]));
}
return tData;
}
private static TabularData makeTable() throws OpenDataException {
TabularData td = new TabularDataSupport(tt);
for (Map.Entry<String, Integer> entry : stringToValue.entrySet()) {
CompositeData cd = new CompositeDataSupport(
ct,
new String[] {"name", "int"},
new Object[] {entry.getKey(), entry.getValue()});
td.put(cd);
}
return td;
}
private static TabularData makeTable() throws OpenDataException {
TabularData td = new TabularDataSupport(tt);
for (Map.Entry<String, Integer> entry : stringToValue.entrySet()) {
CompositeData cd = new CompositeDataSupport(
ct,
new String[] {"name", "int"},
new Object[] {entry.getKey(), entry.getValue()});
td.put(cd);
}
return td;
}
/**
* Will call all getter methods on payload that are defined in the given interfaces
*/
public static Map makeCallerChain ( Object payload, Class... ifaces ) throws OpenDataException, NoSuchMethodException, InstantiationException,
IllegalAccessException, InvocationTargetException, Exception, ClassNotFoundException {
CompositeType rt = new CompositeType("a", "b", new String[] {
"a"
}, new String[] {
"a"
}, new OpenType[] {
javax.management.openmbean.SimpleType.INTEGER
});
TabularType tt = new TabularType("a", "b", rt, new String[] {
"a"
});
TabularDataSupport t1 = new TabularDataSupport(tt);
TabularDataSupport t2 = new TabularDataSupport(tt);
// we need to make payload implement composite data
// it's very likely that there are other proxy impls that could be used
AdvisedSupport as = new AdvisedSupport();
as.setTarget(payload);
InvocationHandler delegateInvocationHandler = (InvocationHandler) Reflections
.getFirstCtor("org.springframework.aop.framework.JdkDynamicAopProxy").newInstance(as);
InvocationHandler cdsInvocationHandler = Gadgets.createMemoizedInvocationHandler(Gadgets.createMap("getCompositeType", rt));
CompositeInvocationHandlerImpl invocationHandler = new CompositeInvocationHandlerImpl();
invocationHandler.addInvocationHandler(CompositeData.class, cdsInvocationHandler);
invocationHandler.setDefaultHandler(delegateInvocationHandler);
final CompositeData cdsProxy = Gadgets.createProxy(invocationHandler, CompositeData.class, ifaces);
JSONObject jo = new JSONObject();
Map m = new HashMap();
m.put("t", cdsProxy);
Reflections.setFieldValue(jo, "properties", m);
Reflections.setFieldValue(jo, "properties", m);
Reflections.setFieldValue(t1, "dataMap", jo);
Reflections.setFieldValue(t2, "dataMap", jo);
return Gadgets.makeMap(t1, t2);
}
public static TabularData toTabularData(JobDetail[] jobDetails) {
TabularData tData = new TabularDataSupport(TABULAR_TYPE);
if (jobDetails != null) {
ArrayList<CompositeData> list = new ArrayList<CompositeData>();
for (JobDetail jobDetail : jobDetails) {
list.add(toCompositeData(jobDetail));
}
tData.putAll(list.toArray(new CompositeData[list.size()]));
}
return tData;
}
/**
* @param jobDataMap
* @return TabularData
*/
public static TabularData toTabularData(JobDataMap jobDataMap) {
TabularData tData = new TabularDataSupport(TABULAR_TYPE);
ArrayList<CompositeData> list = new ArrayList<CompositeData>();
Iterator<String> iter = jobDataMap.keySet().iterator();
while (iter.hasNext()) {
String key = iter.next();
list.add(toCompositeData(key, String.valueOf(jobDataMap.get(key))));
}
tData.putAll(list.toArray(new CompositeData[list.size()]));
return tData;
}
/**
* @param tabularData
* @return array of region statistics
*/
public static TabularData toTabularData(
final List<JobExecutionContext> executingJobs)
throws SchedulerException {
List<CompositeData> list = new ArrayList<CompositeData>();
for (final Iterator<JobExecutionContext> iter = executingJobs
.iterator(); iter.hasNext();) {
list.add(toCompositeData(iter.next()));
}
TabularData td = new TabularDataSupport(TABULAR_TYPE);
td.putAll(list.toArray(new CompositeData[list.size()]));
return td;
}
public static TabularData toTabularData(Trigger[] triggers) {
TabularData tData = new TabularDataSupport(TABULAR_TYPE);
if (triggers != null) {
ArrayList<CompositeData> list = new ArrayList<CompositeData>();
for (Trigger trigger : triggers) {
list.add(toCompositeData(trigger));
}
tData.putAll(list.toArray(new CompositeData[list.size()]));
}
return tData;
}
private static TabularData makeTable() throws OpenDataException {
TabularData td = new TabularDataSupport(tt);
for (Map.Entry<String, Integer> entry : stringToValue.entrySet()) {
CompositeData cd = new CompositeDataSupport(
ct,
new String[] {"name", "int"},
new Object[] {entry.getKey(), entry.getValue()});
td.put(cd);
}
return td;
}
private static TabularData makeTable() throws OpenDataException {
TabularData td = new TabularDataSupport(tt);
for (Map.Entry<String, Integer> entry : stringToValue.entrySet()) {
CompositeData cd = new CompositeDataSupport(
ct,
new String[] {"name", "int"},
new Object[] {entry.getKey(), entry.getValue()});
td.put(cd);
}
return td;
}
private static TabularData makeTable() throws OpenDataException {
TabularData td = new TabularDataSupport(tt);
for (Map.Entry<String, Integer> entry : stringToValue.entrySet()) {
CompositeData cd = new CompositeDataSupport(
ct,
new String[] {"name", "int"},
new Object[] {entry.getKey(), entry.getValue()});
td.put(cd);
}
return td;
}
public TabularData getMissingPersistentMembersJMX() throws AdminException {
try {
Set<PersistentID> members = super.getMissingPersistentMembers();
TabularData results = new TabularDataSupport(PERSISTENT_ID_TABLE_TYPE);
for(PersistentID id : members) {
CompositeData idData = new CompositeDataSupport(PERSISTENT_ID_TYPE, PERSISTENT_ID_FIELDS, new Object[] {id.getHost().toString(), id.getDirectory(), id.getUUID().toString()});
results.put(idData);
}
return results;
} catch( OpenDataException e) {
logger.warning(LocalizedStrings.ONE_ARG, "Exception occurred while getting missing persistent members.", e);
throw new AdminException(e);
}
}
private static TabularData makeTable() throws OpenDataException {
TabularData td = new TabularDataSupport(tt);
for (Map.Entry<String, Integer> entry : stringToValue.entrySet()) {
CompositeData cd = new CompositeDataSupport(
ct,
new String[] {"name", "int"},
new Object[] {entry.getKey(), entry.getValue()});
td.put(cd);
}
return td;
}