修改 Seata 源码使其支持 IPV6 地址
问题:
在使用 Seata v1.6.1 时,客户端通过 IPV6 only 的域名访问 seata-server 时,会把解析到的 IPV6 地址简单粗暴地从第一个 : 处分割,前半部分作为 IP,后半部分作为端口号,这在 IPV4 的情况下能够正常工作,但是 IPV6 地址是冒分十六进制,其中有多个冒号,这种分割的方法会把 IPV6 地址从第一个冒号处分为两半,导致后续创建连接时会报错。
解决方法:
从 Github 下载 Seata v1.6.1 源码,修改两处代码。
common/src/main/java/io/seata/common/util/NetUtil.java 81行
1 | public static InetSocketAddress toInetSocketAddress(String address) { |
core/src/main/java/io/seata/core/rpc/netty/NettyClientChannelManager.java 199行
1 | if (CollectionUtils.isNotEmpty(channelAddress)) { |
- 修改完成后运行
mvn clean compile -DskipTest、mvn install即可将修改后的 Seata 安装到本地 Maven 仓库。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LDQ's Blog!
