mirror of
https://gitee.com/jmix/cuba.git
synced 2024-12-02 19:27:57 +08:00
Refs #1612 Make JMX console to work in complex deployment environments
This commit is contained in:
parent
80f926a1e6
commit
4991afe75e
@ -770,8 +770,7 @@ create table SYS_JMX_INSTANCE (
|
||||
DELETE_TS datetime,
|
||||
DELETED_BY varchar(50),
|
||||
--
|
||||
CLUSTER_NODE_NAME varchar(255),
|
||||
DESCRIPTION varchar(500),
|
||||
NODE_NAME varchar(255),
|
||||
ADDRESS varchar(500) not null,
|
||||
LOGIN varchar(50) not null,
|
||||
PASSWORD varchar(255) not null,
|
||||
@ -800,12 +799,12 @@ insert into SEC_GROUP (ID, CREATE_TS, VERSION, NAME, PARENT_ID)
|
||||
values ('0fa2b1a5-1d68-4d69-9fbd-dff348347f93', current_timestamp, 0, 'Company', null)^
|
||||
|
||||
insert into SEC_USER (ID, CREATE_TS, VERSION, LOGIN, LOGIN_LC, PASSWORD, NAME, GROUP_ID, ACTIVE, TYPE)
|
||||
values ('60885987-1b61-4247-94c7-dff348347f93', current_timestamp, 'admin', 'admin',
|
||||
values ('60885987-1b61-4247-94c7-dff348347f93', current_timestamp, 0, 'admin', 'admin',
|
||||
'cc2229d1b8a052423d9e1c9ef0113b850086586a',
|
||||
'Administrator', 0, '0fa2b1a5-1d68-4d69-9fbd-dff348347f93', 1, 'C')^
|
||||
'Administrator', '0fa2b1a5-1d68-4d69-9fbd-dff348347f93', 1, 'C')^
|
||||
|
||||
insert into SEC_USER (ID, CREATE_TS, VERSION, LOGIN, LOGIN_LC, PASSWORD, NAME, GROUP_ID, ACTIVE, TYPE)
|
||||
values ('60885987-1b61-4247-94c7-dff348347f94', current_timestamp, 'emailer', 'emailer', null,
|
||||
values ('60885987-1b61-4247-94c7-dff348347f94', current_timestamp, 0, 'emailer', 'emailer', null,
|
||||
'User for Email sending', '0fa2b1a5-1d68-4d69-9fbd-dff348347f93', 1, 'C')^
|
||||
|
||||
insert into SEC_ROLE (ID, CREATE_TS, VERSION, NAME, TYPE)
|
||||
|
@ -741,8 +741,7 @@ create table SYS_JMX_INSTANCE (
|
||||
DELETE_TS timestamp,
|
||||
DELETED_BY varchar(50),
|
||||
--
|
||||
CLUSTER_NODE_NAME varchar(255),
|
||||
DESCRIPTION varchar(500),
|
||||
NODE_NAME varchar(255),
|
||||
ADDRESS varchar(500) not null,
|
||||
LOGIN varchar(50) not null,
|
||||
PASSWORD varchar(255) not null,
|
||||
|
@ -808,8 +808,7 @@ create table SYS_JMX_INSTANCE (
|
||||
DELETE_TS timestamp,
|
||||
DELETED_BY varchar(50),
|
||||
--
|
||||
CLUSTER_NODE_NAME varchar(255),
|
||||
DESCRIPTION varchar(500),
|
||||
NODE_NAME varchar(255),
|
||||
ADDRESS varchar(500) not null,
|
||||
LOGIN varchar(50) not null,
|
||||
PASSWORD varchar(255) not null,
|
||||
|
@ -0,0 +1,6 @@
|
||||
-- $Id$
|
||||
-- Description: remove column DESCRIPTION from SYS_JMX_INSTANCE table
|
||||
|
||||
alter table SYS_JMX_INSTANCE drop column DESCRIPTION^
|
||||
|
||||
exec sp_rename 'SYS_JMX_INSTANCE.CLUSTER_NODE_NAME', 'NODE_NAME', 'COLUMN'^
|
@ -0,0 +1,6 @@
|
||||
-- $Id$
|
||||
-- Description: remove column DESCRIPTION from SYS_JMX_INSTANCE table
|
||||
|
||||
alter table SYS_JMX_INSTANCE drop column DESCRIPTION^
|
||||
|
||||
alter table SYS_JMX_INSTANCE rename column CLUSTER_NODE_NAME to NODE_NAME^
|
@ -20,15 +20,12 @@ import javax.persistence.Table;
|
||||
*/
|
||||
@Entity(name = "sys$JmxInstance")
|
||||
@Table(name = "SYS_JMX_INSTANCE")
|
||||
@NamePattern("#getCaption|clusterNodeName,address,description")
|
||||
@NamePattern("#getCaption|nodeName,address,description")
|
||||
@SystemLevel
|
||||
public class JmxInstance extends StandardEntity {
|
||||
|
||||
@Column(name = "CLUSTER_NODE_NAME", length = 255, nullable = false)
|
||||
protected String clusterNodeName;
|
||||
|
||||
@Column(name = "DESCRIPTION", length = 500)
|
||||
protected String description;
|
||||
@Column(name = "NODE_NAME", length = 255)
|
||||
protected String nodeName;
|
||||
|
||||
@Column(name = "ADDRESS", length = 500, nullable = false)
|
||||
protected String address;
|
||||
@ -43,15 +40,15 @@ public class JmxInstance extends StandardEntity {
|
||||
}
|
||||
|
||||
public JmxInstance(String clusterNodeName) {
|
||||
this.clusterNodeName = clusterNodeName;
|
||||
this.nodeName = clusterNodeName;
|
||||
}
|
||||
|
||||
public String getClusterNodeName() {
|
||||
return clusterNodeName;
|
||||
public String getNodeName() {
|
||||
return nodeName;
|
||||
}
|
||||
|
||||
public void setClusterNodeName(String clusterNodeName) {
|
||||
this.clusterNodeName = clusterNodeName;
|
||||
public void setNodeName(String nodeName) {
|
||||
this.nodeName = nodeName;
|
||||
}
|
||||
|
||||
public String getAddress() {
|
||||
@ -78,20 +75,10 @@ public class JmxInstance extends StandardEntity {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public String getCaption() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (StringUtils.isNotEmpty(description))
|
||||
sb.append(description);
|
||||
else
|
||||
sb.append(clusterNodeName);
|
||||
if (StringUtils.isNotEmpty(nodeName))
|
||||
sb.append(nodeName);
|
||||
|
||||
if (StringUtils.isNotEmpty(address))
|
||||
sb.append(" (").append(address).append(")");
|
||||
|
@ -86,8 +86,8 @@ ScheduledTaskDefinedBy.BEAN=Bean
|
||||
ScheduledTaskDefinedBy.CLASS=Class
|
||||
ScheduledTaskDefinedBy.SCRIPT=Script
|
||||
|
||||
JmxInstance.clusterNodeName=Cluster node name
|
||||
JmxInstance.nodeName=Node name
|
||||
JmxInstance.description=Description
|
||||
JmxInstance.address=JMX Address
|
||||
JmxInstance.address=JMX host:port
|
||||
JmxInstance.login=Login
|
||||
JmxInstance.password=Password
|
@ -82,8 +82,8 @@ ScheduledTaskDefinedBy.BEAN=Bean
|
||||
ScheduledTaskDefinedBy.CLASS=Класс
|
||||
ScheduledTaskDefinedBy.SCRIPT=Скрипт
|
||||
|
||||
JmxInstance.clusterNodeName=Cluster node name
|
||||
JmxInstance.nodeName=Node name
|
||||
JmxInstance.description=Description
|
||||
JmxInstance.address=JMX Address
|
||||
JmxInstance.address=JMX host:port
|
||||
JmxInstance.login=Login
|
||||
JmxInstance.password=Password
|
@ -36,6 +36,7 @@ public class ManagedBeanInfo extends AbstractNotPersistentEntity {
|
||||
@MetaProperty
|
||||
private String propertyList;
|
||||
|
||||
@MetaProperty
|
||||
private JmxInstance jmxInstance;
|
||||
|
||||
private List<ManagedBeanAttribute> attributes;
|
||||
@ -105,4 +106,4 @@ public class ManagedBeanInfo extends AbstractNotPersistentEntity {
|
||||
public void setJmxInstance(JmxInstance jmxInstance) {
|
||||
this.jmxInstance = jmxInstance;
|
||||
}
|
||||
}
|
||||
}
|
@ -7,10 +7,13 @@ package com.haulmont.cuba.gui.components;
|
||||
|
||||
import com.haulmont.chile.core.model.MetaClass;
|
||||
import com.haulmont.cuba.client.ClientConfig;
|
||||
import com.haulmont.cuba.core.app.DataService;
|
||||
import com.haulmont.cuba.core.entity.Entity;
|
||||
import com.haulmont.cuba.core.entity.SoftDelete;
|
||||
import com.haulmont.cuba.core.global.*;
|
||||
import com.haulmont.cuba.gui.ServiceLocator;
|
||||
import com.haulmont.cuba.core.global.AppBeans;
|
||||
import com.haulmont.cuba.core.global.Configuration;
|
||||
import com.haulmont.cuba.core.global.LoadContext;
|
||||
import com.haulmont.cuba.core.global.View;
|
||||
import com.haulmont.cuba.gui.WindowManager;
|
||||
import com.haulmont.cuba.gui.data.CollectionDatasource;
|
||||
import com.haulmont.cuba.gui.data.impl.DatasourceImplementation;
|
||||
@ -94,8 +97,6 @@ public interface PickerField extends Field, Component.ActionsHolder {
|
||||
|
||||
public static abstract class StandardAction extends AbstractAction implements ShortcutAction{
|
||||
|
||||
private static final long serialVersionUID = 8103707056784950383L;
|
||||
|
||||
protected PickerField pickerField;
|
||||
|
||||
public StandardAction(String id, PickerField pickerField) {
|
||||
@ -159,7 +160,7 @@ public interface PickerField extends Field, Component.ActionsHolder {
|
||||
throw new IllegalStateException("Please specify metaclass or property for PickerField");
|
||||
windowAlias = metaClass.getName() + ".lookup";
|
||||
}
|
||||
pickerField.getFrame().openLookup(
|
||||
Window lookupWindow = pickerField.getFrame().openLookup(
|
||||
windowAlias,
|
||||
new Window.Lookup.Handler() {
|
||||
@Override
|
||||
@ -174,12 +175,21 @@ public interface PickerField extends Field, Component.ActionsHolder {
|
||||
lookupScreenOpenType,
|
||||
lookupScreenParams != null ? lookupScreenParams : Collections.<String, Object>emptyMap()
|
||||
);
|
||||
lookupWindow.addListener(new Window.CloseListener() {
|
||||
@Override
|
||||
public void windowClosed(String actionId) {
|
||||
afterCloseLookup(actionId);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void afterSelect(Collection items) {
|
||||
}
|
||||
|
||||
public void afterCloseLookup(String actionId) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public KeyCombination getKeyCombination() {
|
||||
ClientConfig clientConfig = AppBeans.get(Configuration.class).getConfig(ClientConfig.class);
|
||||
@ -257,7 +267,7 @@ public interface PickerField extends Field, Component.ActionsHolder {
|
||||
|
||||
if (entity instanceof SoftDelete && ((SoftDelete) entity).isDeleted()) {
|
||||
pickerField.getFrame().showNotification(
|
||||
MessageProvider.getMessage(ActionsFieldHelper.class, "ActionsFieldHelper.openMsg"),
|
||||
messages.getMessage(ActionsFieldHelper.class, "ActionsFieldHelper.openMsg"),
|
||||
IFrame.NotificationType.HUMANIZED);
|
||||
return;
|
||||
}
|
||||
@ -265,7 +275,7 @@ public interface PickerField extends Field, Component.ActionsHolder {
|
||||
LoadContext ctx = new LoadContext(entity.getClass());
|
||||
ctx.setId(entity.getId());
|
||||
ctx.setView(View.MINIMAL);
|
||||
entity = ServiceLocator.getDataService().load(ctx);
|
||||
entity = AppBeans.get(DataService.class).load(ctx);
|
||||
|
||||
if (entity != null) {
|
||||
String windowAlias = editScreen;
|
||||
@ -360,4 +370,4 @@ public interface PickerField extends Field, Component.ActionsHolder {
|
||||
return KeyCombination.create(clientConfig.getPickerOpenShortcut());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -634,6 +634,20 @@
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
/*
|
||||
* JMX
|
||||
*/
|
||||
|
||||
.v-table-cell-cuba-jmx-tree-table-domain,
|
||||
.v-table-cell-content-cuba-jmx-tree-table-domain,
|
||||
.v-table-row-cuba-jmx-tree-table-domain {
|
||||
background-color: #c6cbcd;
|
||||
}
|
||||
|
||||
.v-table-table td.v-table-cell-cuba-jmx-tree-table-domain {
|
||||
border-right-color: #c6cbcd;
|
||||
}
|
||||
|
||||
/*
|
||||
* Menu separator
|
||||
*/
|
||||
|
@ -612,6 +612,20 @@
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
/*
|
||||
* JMX
|
||||
*/
|
||||
|
||||
.v-table-cell-cuba-jmx-tree-table-domain,
|
||||
.v-table-cell-content-cuba-jmx-tree-table-domain,
|
||||
.v-table-row-cuba-jmx-tree-table-domain {
|
||||
background-color: #c6cbcd;
|
||||
}
|
||||
|
||||
.v-table-table td.v-table-cell-cuba-jmx-tree-table-domain {
|
||||
border-right-color: #c6cbcd;
|
||||
}
|
||||
|
||||
/*
|
||||
* Menu separator
|
||||
*/
|
||||
|
@ -21,6 +21,7 @@ import com.haulmont.cuba.web.app.ui.jmxinstance.edit.JmxInstanceEditor;
|
||||
import com.haulmont.cuba.web.jmx.JmxControlAPI;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.annotation.Resource;
|
||||
import javax.inject.Inject;
|
||||
import java.util.*;
|
||||
@ -41,7 +42,7 @@ public class MbeansDisplayWindow extends AbstractWindow {
|
||||
protected TextField objectNameField;
|
||||
|
||||
@Inject
|
||||
protected TextField localJmxField;
|
||||
protected Label localJmxField;
|
||||
|
||||
@Resource(name = "mbeans")
|
||||
protected TreeTable mbeansTable;
|
||||
@ -83,7 +84,7 @@ public class MbeansDisplayWindow extends AbstractWindow {
|
||||
@Override
|
||||
public boolean isApplicableTo(Datasource.State state, Entity item) {
|
||||
return super.isApplicableTo(state, item) &&
|
||||
((ManagedBeanInfo)item).getObjectName() != null;
|
||||
((ManagedBeanInfo) item).getObjectName() != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -114,7 +115,7 @@ public class MbeansDisplayWindow extends AbstractWindow {
|
||||
|
||||
jmxConnectionField.addAction(new PickerField.LookupAction(jmxConnectionField) {
|
||||
@Override
|
||||
public void afterSelect(Collection items) {
|
||||
public void afterCloseLookup(String actionId) {
|
||||
jmxInstancesDs.refresh();
|
||||
}
|
||||
});
|
||||
@ -145,6 +146,25 @@ public class MbeansDisplayWindow extends AbstractWindow {
|
||||
|
||||
localJmxField.setValue(jmxControlAPI.getLocalNodeName());
|
||||
localJmxField.setEditable(false);
|
||||
|
||||
mbeansTable.setStyleProvider(new Table.StyleProvider() {
|
||||
@Nullable
|
||||
@Override
|
||||
public String getStyleName(@Nullable Entity entity, @Nullable String property) {
|
||||
if (entity != null) {
|
||||
if (entity instanceof ManagedBeanInfo &&
|
||||
((ManagedBeanInfo) entity).getObjectName() == null)
|
||||
return "cuba-jmx-tree-table-domain";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String getItemIcon(@Nullable Entity entity) {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private class ObjectNameFieldListener implements ValueListener {
|
||||
|
@ -9,7 +9,7 @@
|
||||
<collectionDatasource id="jmxInstancesDs" class="com.haulmont.cuba.core.entity.JmxInstance" view="_local">
|
||||
<datasourceClass>com.haulmont.cuba.web.app.ui.jmxcontrol.ds.JmxInstancesDatasource</datasourceClass>
|
||||
</collectionDatasource>
|
||||
|
||||
|
||||
<collectionDatasource
|
||||
id="mbeanDs"
|
||||
class="com.haulmont.cuba.jmxcontrol.entity.ManagedBeanInfo"
|
||||
@ -28,25 +28,23 @@
|
||||
<rows>
|
||||
<row>
|
||||
<label value="msg://localJmxNode"/>
|
||||
<textField id="localJmxField" width="400px" datatype="string"/>
|
||||
<label id="localJmxField" stylename="h2" width="400px"/>
|
||||
</row>
|
||||
<row>
|
||||
<label value="msg://targetJmxNode"/>
|
||||
<lookupPickerField id="jmxConnectionField" optionsDatasource="jmxInstancesDs" width="400px"/>
|
||||
</row>
|
||||
<row>
|
||||
<label value="msg://searchByObjectName"/>
|
||||
<textField id="objectNameField" width="400px"/>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
</groupBox>
|
||||
|
||||
<hbox spacing="true">
|
||||
<button action="mbeans.refresh" icon="icons/refresh.png"/>
|
||||
<button action="mbeans.inspect" icon="icons/edit.png"/>
|
||||
<label value="msg://searchByObjectName"/>
|
||||
<textField id="objectNameField" width="400px"/>
|
||||
</hbox>
|
||||
<treeTable id="mbeans" editable="false" width="100%">
|
||||
<buttonsPanel>
|
||||
<button action="mbeans.refresh" icon="icons/refresh.png"/>
|
||||
<button action="mbeans.inspect" icon="icons/edit.png"/>
|
||||
</buttonsPanel>
|
||||
<columns>
|
||||
<column id="domain" caption="msg://mbean.domain"/>
|
||||
<column id="objectName" caption="msg://mbean.name"/>
|
||||
|
@ -13,7 +13,7 @@ import com.haulmont.cuba.core.entity.JmxInstance;
|
||||
import com.haulmont.cuba.core.global.AppBeans;
|
||||
import com.haulmont.cuba.gui.data.DataService;
|
||||
import com.haulmont.cuba.gui.data.DsContext;
|
||||
import com.haulmont.cuba.gui.data.impl.AbstractTreeTableDatasource;
|
||||
import com.haulmont.cuba.gui.data.impl.AbstractTreeDatasource;
|
||||
import com.haulmont.cuba.gui.logging.UIPerformanceLogger;
|
||||
import com.haulmont.cuba.jmxcontrol.entity.ManagedBeanDomain;
|
||||
import com.haulmont.cuba.jmxcontrol.entity.ManagedBeanInfo;
|
||||
@ -28,7 +28,7 @@ import java.util.*;
|
||||
* @author budarov
|
||||
* @version $Id$
|
||||
*/
|
||||
public class ManagedBeanInfoDatasource extends AbstractTreeTableDatasource<ManagedBeanInfo, UUID> {
|
||||
public class ManagedBeanInfoDatasource extends AbstractTreeDatasource<ManagedBeanInfo, UUID> {
|
||||
|
||||
private JmxInstance jmxInstance = null;
|
||||
|
||||
@ -100,18 +100,6 @@ public class ManagedBeanInfoDatasource extends AbstractTreeTableDatasource<Manag
|
||||
return managedBeans;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCaption(UUID itemId) {
|
||||
ManagedBeanInfo mbi = (ManagedBeanInfo) data.get(itemId);
|
||||
return mbi.getObjectName() == null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCaption(UUID itemId) {
|
||||
ManagedBeanInfo mbi = (ManagedBeanInfo) data.get(itemId);
|
||||
return mbi.getDomain();
|
||||
}
|
||||
|
||||
public JmxInstance getJmxInstance() {
|
||||
return jmxInstance;
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ public class MbeanInspectWindow extends AbstractEditor {
|
||||
return;
|
||||
}
|
||||
|
||||
final Window.Editor w = openEditor("jmxcontrol$EditAttribute", mba, WindowManager.OpenType.THIS_TAB);
|
||||
final Window.Editor w = openEditor("jmxcontrol$EditAttribute", mba, WindowManager.OpenType.DIALOG);
|
||||
w.addListener(new CloseListener() {
|
||||
@Override
|
||||
public void windowClosed(String actionId) {
|
||||
|
@ -5,9 +5,6 @@
|
||||
datasource="attrDs"
|
||||
caption="msg://editAttribute.title">
|
||||
|
||||
<metadataContext>
|
||||
</metadataContext>
|
||||
|
||||
<dsContext>
|
||||
<datasource id="attrDs" class="com.haulmont.cuba.jmxcontrol.entity.ManagedBeanAttribute" view="_local"/>
|
||||
</dsContext>
|
||||
@ -32,4 +29,4 @@
|
||||
</vbox>
|
||||
<iframe id="windowActions" src="/com/haulmont/cuba/gui/edit-window.actions.xml"/>
|
||||
</layout>
|
||||
</window>
|
||||
</window>
|
@ -25,6 +25,10 @@
|
||||
<column flex="1"/>
|
||||
</columns>
|
||||
<rows>
|
||||
<row>
|
||||
<label value="msg://mbean.jmxConnection"/>
|
||||
<label datasource="mbeanDs" property="jmxInstance" stylename="h2"/>
|
||||
</row>
|
||||
<row>
|
||||
<label value="msg://mbean.name"/>
|
||||
<label datasource="mbeanDs" property="objectName" id="domain" stylename="h2"/>
|
||||
|
@ -11,6 +11,7 @@ import com.haulmont.cuba.jmxcontrol.util.AttributeHelper;
|
||||
import com.haulmont.cuba.web.gui.components.WebComponentsHelper;
|
||||
import com.haulmont.cuba.web.gui.components.WebLabel;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.lang.reflect.UndeclaredThrowableException;
|
||||
import java.util.Map;
|
||||
|
||||
@ -20,6 +21,9 @@ import java.util.Map;
|
||||
*/
|
||||
public class OperationResultWindow extends AbstractWindow {
|
||||
|
||||
@Inject
|
||||
protected Label resultLabel;
|
||||
|
||||
@Override
|
||||
public void init(Map<String, Object> params) {
|
||||
super.init(params);
|
||||
@ -33,10 +37,6 @@ public class OperationResultWindow extends AbstractWindow {
|
||||
|
||||
ScrollBoxLayout container = (ScrollBoxLayout) getComponent("container");
|
||||
if (ex != null) {
|
||||
Label title = new WebLabel();
|
||||
title.setStyleName("h2");
|
||||
title.setValue(getMessage("operationResult.exception"));
|
||||
|
||||
if (ex instanceof UndeclaredThrowableException)
|
||||
ex = ex.getCause();
|
||||
|
||||
@ -50,28 +50,18 @@ public class OperationResultWindow extends AbstractWindow {
|
||||
Label trace = new WebLabel();
|
||||
trace.setValue(msg);
|
||||
|
||||
container.add(title);
|
||||
resultLabel.setValue(getMessage("operationResult.exception"));
|
||||
container.add(trace);
|
||||
}
|
||||
else if (result != null) {
|
||||
Label title = new WebLabel();
|
||||
title.setStyleName("h2");
|
||||
title.setValue(getMessage("operationResult.result"));
|
||||
|
||||
} else if (result != null) {
|
||||
Label valueHolder = new WebLabel();
|
||||
com.vaadin.ui.Label vaadinLbl = (com.vaadin.ui.Label) WebComponentsHelper.unwrap(valueHolder);
|
||||
vaadinLbl.setContentMode(com.vaadin.ui.Label.CONTENT_PREFORMATTED);
|
||||
valueHolder.setValue(AttributeHelper.convertToString(result));
|
||||
|
||||
container.add(title);
|
||||
resultLabel.setValue(getMessage("operationResult.result"));
|
||||
container.add(valueHolder);
|
||||
}
|
||||
else {
|
||||
Label title = new WebLabel();
|
||||
title.setStyleName("h2");
|
||||
title.setValue(getMessage("operationResult.void"));
|
||||
|
||||
container.add(title);
|
||||
} else {
|
||||
resultLabel.setValue(getMessage("operationResult.void"));
|
||||
}
|
||||
|
||||
Button closeBtn = getComponent("close");
|
||||
|
@ -4,15 +4,10 @@
|
||||
messagesPack="com.haulmont.cuba.web.app.ui.jmxcontrol.inspect.operation"
|
||||
caption="msg://operationResult.title">
|
||||
|
||||
<metadataContext>
|
||||
</metadataContext>
|
||||
<dsContext>
|
||||
|
||||
</dsContext>
|
||||
|
||||
<layout expand="container" spacing="true">
|
||||
<scrollBox id="container">
|
||||
<label id="resultLabel" stylename="h2"/>
|
||||
<scrollBox id="container" width="100%">
|
||||
</scrollBox>
|
||||
<button id="close" icon="icons/ok.png"/>
|
||||
</layout>
|
||||
</window>
|
||||
</window>
|
@ -3,6 +3,7 @@ displayMbeans.title = JMX Console
|
||||
inspectMbean.title = Inspect MBean
|
||||
inspectMbean.title.format = Inspect MBean "%s"
|
||||
|
||||
mbean.jmxConnection = Connection
|
||||
mbean.className = Class name
|
||||
mbean.objectName = Object name
|
||||
mbean.description = Description
|
||||
@ -44,6 +45,6 @@ invokeOperation.conversionError = Failed to convert attributes
|
||||
close = Close
|
||||
refresh = Refresh
|
||||
|
||||
searchByObjectName = Search by ObjectName:
|
||||
targetJmxNode = JMX Connection:
|
||||
localJmxNode = Local node:
|
||||
searchByObjectName = Search by ObjectName
|
||||
targetJmxNode = JMX connection
|
||||
localJmxNode = Local node
|
||||
|
@ -4,7 +4,7 @@
|
||||
# Use is subject to license terms.
|
||||
#
|
||||
|
||||
searchByObjectName = Recherche par ObjectName :
|
||||
searchByObjectName = Recherche par ObjectName
|
||||
mbean.domain = Domaine
|
||||
mbean.operations = Opérations
|
||||
mbean.attribute.access = Accès
|
||||
|
@ -3,6 +3,7 @@ displayMbeans.title = Консоль JMX
|
||||
inspectMbean.title = Просмотр MBean объекта
|
||||
inspectMbean.title.format = Просмотр MBean объекта "%s"
|
||||
|
||||
mbean.jmxConnection = Connection
|
||||
mbean.className = Класс
|
||||
mbean.description = Описание
|
||||
mbean.domain = Домен
|
||||
@ -43,6 +44,6 @@ invokeOperation.conversionError = Не удалось привести атри
|
||||
close = Закрыть
|
||||
refresh = Обновить
|
||||
|
||||
searchByObjectName = Поиск по ObjectName:
|
||||
targetJmxNode = JMX Connection:
|
||||
localJmxNode = Local node:
|
||||
searchByObjectName = Поиск по ObjectName
|
||||
targetJmxNode = JMX connection
|
||||
localJmxNode = Local node
|
||||
|
@ -33,7 +33,7 @@
|
||||
</buttonsPanel>
|
||||
<rowsCount/>
|
||||
<columns>
|
||||
<column id="clusterNodeName"/>
|
||||
<column id="nodeName"/>
|
||||
<column id="description"/>
|
||||
<column id="address"/>
|
||||
<column id="login"/>
|
||||
|
@ -14,6 +14,7 @@ import com.haulmont.cuba.gui.components.TextField;
|
||||
import com.haulmont.cuba.gui.data.Datasource;
|
||||
import com.haulmont.cuba.gui.xml.layout.ComponentsFactory;
|
||||
import com.haulmont.cuba.web.jmx.JmxControlAPI;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.Map;
|
||||
@ -64,7 +65,11 @@ public class JmxInstanceEditor extends AbstractEditor<JmxInstance> {
|
||||
// try to connect to instance and assign cluster node name
|
||||
try {
|
||||
String remoteNodeName = jmxControlAPI.getRemoteNodeName(getItem());
|
||||
getItem().setClusterNodeName(remoteNodeName);
|
||||
if (StringUtils.isEmpty(getItem().getNodeName()))
|
||||
getItem().setNodeName(remoteNodeName);
|
||||
} catch (SecurityException e) {
|
||||
showNotification(getMessage("invalidCredentials"), NotificationType.WARNING);
|
||||
return false;
|
||||
} catch (Exception e) {
|
||||
showNotification(getMessage("unableToConnectToInterface"), NotificationType.WARNING);
|
||||
return false;
|
||||
|
@ -16,11 +16,10 @@
|
||||
<layout expand="windowActions">
|
||||
<fieldGroup id="jmxFieldGroup" datasource="jmxInstanceDs">
|
||||
<column width="350px">
|
||||
<field id="clusterNodeName" editable="false"/>
|
||||
<field id="description"/>
|
||||
<field id="address"/>
|
||||
<field id="login"/>
|
||||
<field id="password" custom="true"/>
|
||||
<field id="nodeName"/>
|
||||
</column>
|
||||
</fieldGroup>
|
||||
<iframe id="windowActions" screen="editWindowActions"/>
|
||||
|
@ -4,8 +4,9 @@
|
||||
# Use is subject to license terms.
|
||||
#
|
||||
|
||||
browserCaption=JMX interfaces
|
||||
editorCaption=JMX Connection
|
||||
browserCaption=JMX connections
|
||||
editorCaption=JMX connection
|
||||
|
||||
passwordRequiredMsg=Password isn't specified
|
||||
unableToConnectToInterface=Unable to connect to specified JMX interface
|
||||
unableToConnectToInterface=Unable to connect to specified JMX interface
|
||||
invalidCredentials=Invalid user or password
|
@ -4,8 +4,9 @@
|
||||
# Use is subject to license terms.
|
||||
#
|
||||
|
||||
browserCaption=JMX interfaces
|
||||
editorCaption=JMX Connection
|
||||
browserCaption=JMX connections
|
||||
editorCaption=JMX connection
|
||||
|
||||
passwordRequiredMsg=Заполните поле "Password"
|
||||
unableToConnectToInterface=Невозможно подключиться к указанному JMX интерфейсу
|
||||
unableToConnectToInterface=Невозможно подключиться к указанному JMX интерфейсу
|
||||
invalidCredentials=Неверный логин или пароль
|
@ -54,7 +54,6 @@ public interface JmxControlAPI {
|
||||
/**
|
||||
* Loads attributes for managed bean descriptor
|
||||
*
|
||||
* @param instance JMX node descriptor
|
||||
* @param info managed bean descriptor
|
||||
* @return managed bean descriptor with attributes
|
||||
*/
|
||||
@ -63,7 +62,6 @@ public interface JmxControlAPI {
|
||||
/**
|
||||
* Loads attribute value for managed bean attribute
|
||||
*
|
||||
* @param instance JMX node descriptor
|
||||
* @param attribute attribute descriptor
|
||||
* @return attribute descriptor with value
|
||||
*/
|
||||
@ -72,7 +70,6 @@ public interface JmxControlAPI {
|
||||
/**
|
||||
* Saves attribute value to JMX node
|
||||
*
|
||||
* @param instance JMX node descriptor
|
||||
* @param attribute attribute descriptor
|
||||
*/
|
||||
void saveAttributeValue(ManagedBeanAttribute attribute);
|
||||
@ -80,7 +77,6 @@ public interface JmxControlAPI {
|
||||
/**
|
||||
* Invokes method of managed bean
|
||||
*
|
||||
* @param instance JMX node descriptor
|
||||
* @param operation operation descriptor
|
||||
* @param parameterValues array with parameter values
|
||||
* @return invocation result
|
||||
|
Loading…
Reference in New Issue
Block a user