use of com.haulmont.cuba.web.jmx.entity.ManagedBeanInfo in project cuba by cuba-platform.
the class MbeansDisplayWindow method init.
@Override
public void init(Map<String, Object> params) {
super.init(params);
objectNameField.addValueChangeListener(new ObjectNameFieldListener());
mbeansTable.addAction(new RefreshAction(mbeansTable));
Action inspectAction = new ItemTrackingAction("inspect").withCaption(getMessage("action.inspect")).withHandler(event -> {
Set<ManagedBeanInfo> selected = mbeansTable.getSelected();
if (!selected.isEmpty()) {
ManagedBeanInfo mbi = selected.iterator().next();
if (mbi.getObjectName() != null) {
// otherwise it's a fake root node
Window editor = openEditor("jmxConsoleInspectMbean", mbi, OpenType.THIS_TAB);
editor.addCloseListener(actionId -> {
mbeansTable.requestFocus();
});
} else {
// expand / collapse fake root node
UUID itemId = mbi.getId();
if (mbeansTable.isExpanded(itemId)) {
mbeansTable.collapse(itemId);
} else {
mbeansTable.expand(itemId);
}
}
}
});
mbeansTable.addAction(inspectAction);
mbeansTable.setItemClickAction(inspectAction);
localJmxInstance = jmxControlAPI.getLocalInstance();
jmxInstancesDs.refresh();
jmxConnectionField.setValue(localJmxInstance);
jmxConnectionField.setRequired(true);
jmxConnectionField.addValueChangeListener(e -> {
JmxInstance jmxInstance = (JmxInstance) e.getValue();
try {
mbeanDs.setJmxInstance(jmxInstance);
mbeanDs.refresh();
} catch (JmxControlException ex) {
showNotification(getMessage("unableToConnectToInterface"), NotificationType.WARNING);
if (jmxInstance != localJmxInstance) {
jmxConnectionField.setValue(localJmxInstance);
}
}
});
jmxConnectionField.removeAllActions();
jmxConnectionField.addAction(new PickerField.LookupAction(jmxConnectionField) {
@Override
public void afterCloseLookup(String actionId) {
jmxInstancesDs.refresh();
}
});
jmxConnectionField.addAction(new BaseAction("actions.Add").withIcon("icons/plus-btn.png").withHandler(event -> {
JmxInstanceEditor instanceEditor = (JmxInstanceEditor) openEditor(metadata.create(JmxInstance.class), OpenType.DIALOG);
instanceEditor.addCloseListener(actionId -> {
if (COMMIT_ACTION_ID.equals(actionId)) {
jmxInstancesDs.refresh();
jmxConnectionField.setValue(instanceEditor.getItem());
}
});
}));
mbeanDs.setJmxInstance(localJmxInstance);
mbeanDs.refresh();
localJmxField.setValue(jmxControlAPI.getLocalNodeName());
localJmxField.setEditable(false);
mbeansTable.setStyleProvider((entity, property) -> {
if (entity != null && entity.getObjectName() == null) {
return "c-jmx-tree-table-domain";
}
return null;
});
}
use of com.haulmont.cuba.web.jmx.entity.ManagedBeanInfo in project cuba by cuba-platform.
the class ManagedBeanAttributeDatasource method loadData.
@Override
protected void loadData(Map<String, Object> params) {
data.clear();
Datasource mbeanDs = getDsContext().get("mbeanDs");
ManagedBeanInfo mbean = (ManagedBeanInfo) mbeanDs.getItem();
if (mbean != null) {
try {
jmxControlAPI.loadAttributes(mbean);
} catch (JmxControlException e) {
log.error("Error loading attributes", e);
}
if (mbean.getAttributes() != null) {
for (ManagedBeanAttribute attr : mbean.getAttributes()) {
data.put(attr.getId(), attr);
}
}
}
}
use of com.haulmont.cuba.web.jmx.entity.ManagedBeanInfo in project cuba by cuba-platform.
the class ThreadsDatasource method getStackTrace.
protected String getStackTrace(Long threadId) {
JmxInstance node = (JmxInstance) savedParameters.get("node");
ManagedBeanInfo threadingBean = jmxControlAPI.getManagedBean(node, "java.lang:type=Threading");
ManagedBeanOperation getThreadInfo = jmxControlAPI.getOperation(threadingBean, "getThreadInfo", new String[] { "long", "int" });
CompositeData threadInfo = (CompositeData) jmxControlAPI.invokeOperation(getThreadInfo, new Object[] { threadId, Integer.MAX_VALUE });
StringBuilder sb = new StringBuilder();
if (threadInfo != null) {
CompositeData[] traces = (CompositeData[]) threadInfo.get("stackTrace");
ThreadSnapshot t = getThreadSnapshot(threadId);
sb.append(t.getName()).append(" [id=").append(threadId).append("] (").append(t.getStatus()).append(")\n");
for (CompositeData trace : traces) {
String className = (String) trace.get("className");
String methodName = (String) trace.get("methodName");
int line = (int) trace.get("lineNumber");
sb.append(className).append(".").append(methodName).append(":").append(line).append("\n");
}
}
return sb.toString();
}
Aggregations