我正在尝试将JConsole连接到远程Slave EAP实例。 它以域模式运行。
我可以通过本机管理端口连接到主控主机控制器和从属主机控制器,但不能通过端口4447+offset
连接到从属实例。
我创建了具有角色SuperUser
(以及superuser
)
我在domain.xml中将JMX子系统设置为
<subsystem xmlns="urn:jboss:domain:jmx:1.3">
<expose-resolved-model/>
<expose-expression-model/>
<remoting-connector use-management-endpoint="false"/>
<sensitivity non-core-mbeans="true"/>
</subsystem>
没有成功。
然后我尝试使用简单的JMX客户端,并且能够看到用户已经过身份验证并建立了连接,但是当我尝试获取MBean的数量时,它返回0。
我可以从连接中看到可用的JMX域,但不能查看任何MBean。
Java客户端的代码片段:
JMXConnector jmxConnector = JMXConnectorFactory
.connect(serviceURL, env);
MBeanServerConnection connection = jmxConnector
.getMBeanServerConnection();
// Invoke on the JBoss AS MBean server
int count = connection.getMBeanCount();
System.out.println("MBeanCount:" + count);
System.out.println("Domains:" + Arrays.toString(connection.getDomains()));
输出:
MBeanCount:0
Domains:[jboss.as, jboss.as.expr, jboss.jsr77, java.util.logging, org.switchyard.admin, jboss.ws, jboss.msc, jboss.jta, java.nio, jgroups, JMImplementation, com.oracle.jdbc, java.lang, com.sun.management, org.apache.camel, jboss.infinispan, jboss.modules]
我在配置中错过了哪一步?
感谢。
答案 0 :(得分:1)
我找到了一个解决方案,我无法在任何资源中看到我通过JBoos和RedHat网站搜索和搜索的资源。
所有资源告诉: 要连接到jmx:remoting-jmx subssytem用户必须在ApplicationRealm中,并且必须具有SuperUser角色。 但实际上......
我在分配给$scope.$watch('results', function(newVal, oldVal) {
if (newVal !== oldVal) {
updateRandomValues();
}
});
的{{1}}子系统中打开了另一个端口/连接器,我得到了我需要的东西。
所以我的解决方案看起来像:
jboss:domain:remoting
文件中的jmx连接用户:
ManagementRealm
mgmt-users.properties
文件中的管理组
jmxadmin=...pasword hash...
mgmt-groups.properties
档案
jmxadmin=SuperUser
元素:
domain.xml
<management>
元素
<management>
<access-control provider="rbac">
<role-mapping>
...
<role name="SuperUser">
<include>
<user name="jmxadmin"/>
...
</include>
</role>
...
</role-mapping>
</access-control>
</management>
<subsystem xmlns="urn:jboss:domain:jmx:1.3">
元素
<subsystem xmlns="urn:jboss:domain:jmx:1.3">
<expose-resolved-model/>
<expose-expression-model/>
<remoting-connector use-management-endpoint="false"/>
<sensitivity non-core-mbeans="true"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:remoting:1.2">
元素
<subsystem xmlns="urn:jboss:domain:remoting:1.2">
<connector name="remoting-connector" socket-binding="remoting" security-realm="ApplicationRealm"/>
<connector name="remoting-mgmt-connector" socket-binding="mgmt-remoting" security-realm="ManagementRealm"/>
</subsystem>
毕竟我能够连接JConsole或使用自定义JMX连接来查看我希望使用<socket-binding-groups>
连接看到的所有MBean:
<socket-binding-groups>
<socket-binding-group name="full-ha-sockets" default-interface="public">
...
<socket-binding name="remoting" port="4447"/>
<socket-binding name="mgmt-remoting" port="4457"/>
...
不通过ManagementRealm
service:jmx:remoting-jmx://jboss_slave_host:4457+${jboss.socket.binding.port-offset}
端口