Infinispan配置TCPPING时Transport.getAddress()为空启动失败如何解决
问题根因
你的自定义JGroups配置缺少集群通信必需的完整协议栈组件,仅配置TCP和TCPPING无法完成集群成员身份确认、视图发布的完整启动流程,导致JGroups的集群视图回调晚于Infinispan拓扑管理器的初始化逻辑,节点地址未完成赋值就被调用触发空指针。
修复方案
1. 补全JGroups配置
将你的jgroups.xml替换为包含完整协议链的配置,保留你需要的固定端口、TCPPING静态节点配置即可:
<config xmlns="urn:org:jgroups" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:org:jgroups http://www.jgroups.org/schema/jgroups.xsd"> <TCP bind_port="7950" /> <TCPPING initial_hosts="192.168.42.100[7950],192.165.10.52[7950]" /> <MERGE3 max_interval="30000" min_interval="10000"/> <FD_SOCK/> <FD_ALL timeout="3000" interval="1000" timeout_check_interval="1000"/> <VERIFY_SUSPECT timeout="1500" /> <pbcast.NAKACK2 use_mcast_xmit="false" discard_delivered_msgs="true"/> <UNICAST3 conn_close_timeout="5000" xmit_table_num_rows="100" xmit_table_msgs_per_row="2000" xmit_table_max_size="10485760"/> <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000" max_bytes="4M"/> <pbcast.GMS print_local_addr="true" join_timeout="2000"/> <UFC max_credits="2M" min_threshold="0.4"/> <MFC max_credits="2M" min_threshold="0.4"/> <FRAG2 frag_size="60K" /> </config>
上述配置保留了你自定义的端口和静态集群节点列表,补充了JGroups集群运行必需的故障检测、成员管理、消息可靠传输相关协议,保证集群视图会在Infinispan拓扑管理器初始化前完成发布,节点地址会正常赋值。
2. 可选:显式指定节点名称
如果你需要手动指定节点标识,可以在初始化GlobalConfiguration时添加nodeName配置:
GlobalConfiguration globalConfiguration = global.transport() .defaultTransport() .nodeName("自定义节点名称") .addProperty("configurationFile", "jgroups.xml") .build();
内容的提问来源于stack exchange,提问作者iXô
相关产品推荐
相关产品推荐

