如何解决如何获取 Wildfly 21 上的集群节点信息?
我正在尝试使用以下应用程序代码获取集群信息(esp 节点列表)。
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
String clusterMembers = (String) (server.getAttribute(new ObjectName("jboss.infinispan:type=CacheManager,name=\"ejb\",component=CacheManager"),"clusterMembers"));
(or)
Object obj = server.getAttribute(ObjectName.getInstance("jgroups:type=channel,cluster=\"web\""),"View");
两者都抛出 InstanceNotFoundExceptions。
javax.management.InstanceNotFoundException: jgroups:type=channel,cluster="web"
2021-02-08 15:39:59,046 ERROR [stderr:71] (default task-1) javax.management.InstanceNotFoundException: jgroups:type=channel,047 ERROR [stderr:71] (default task-1) at org.jboss.as.jmx.PluggableMBeanServerImpl.findDelegate(PluggableMBeanServerImpl.java:1113)
2021-02-08 15:39:59,047 ERROR [stderr:71] (default task-1) at org.jboss.as.jmx.PluggableMBeanServerImpl.getAttribute(PluggableMBeanServerImpl.java:389)
解决方法
有很多方法可以做到这一点。以编程方式,也许最简单的方法是使用 WildFly 的集群 API。有关详细信息,请参阅:https://github.com/wildfly/wildfly/blob/master/docs/src/main/asciidoc/_high-availability/Clustering_API.adoc#group-membership
或者,您也可以使用 WildFly 的 CLI 来获取集群信息。 例如
[standalone@embedded /] /subsystem=jgroups/channel=ee:read-attribute(name=view)
{
"outcome" => "success","result" => "[localhost|0] (1) [localhost]"
}
或者,您可以直接使用 Infinispan 或 JGroups API 获取集群信息。 例如
@Resource(lookup = "java:jboss/infinispan/cache-container/web")
private EmbeddedCacheManager manager;
@Resource(lookup = "java:jboss/jgroups/channel/default")
private JChannel channel;
public void foo() {
System.out.println(this.manager.getMembers());
System.out.println(this.channel.getView());
}
最后,如果您更喜欢使用 JMX 路线,请确保您的 WildFly 配置定义了一个 JMX 子系统,否则将不会注册任何 mbean。
Infinispan mbeans 使用域注册:“org.wildfly.clustering.infinispan”。确保您使用的是 22.0.1.Final,其中包含针对 https://issues.redhat.com/browse/WFLY-14286
的修复您的 jgroups jmx 代码名称几乎是正确的 - 使用默认配置,每个 Infinispan 缓存管理器使用一个基于公共 JChannel 的不同 ForkChannel,名为“ee”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。