JAVA RMI 阿里云服务器连接超时问题

需求,A应用、B应用进行通讯,使用rmi,在本地测试完毕,部署到阿里云服务器。一直报如下错:

java.rmi.ConnectException: Connection refused
...

查找资料后,发现:rmi有两个端口,一个是服务注册端口(默认1099),一个是通讯端口(不指定的话,随机分配)

解决方案:
在rmi服务端新增SMRMISocket 类

public class SMRMISocket extends RMISocketFactory {
    public Socket createSocket(String host, int port)
            throws IOException{
        return new Socket(host,port);
    }
    public ServerSocket createServerSocket(int port)
            throws IOException {
        if (port == 0)  port = 8080;//不指定就随机
        return new ServerSocket(port);
    }
}

在rmi服务端new UnicastRemoteObject()之前,新增如下代码

try {
    RMISocketFactory.setSocketFactory(new SMRMISocket());
} catch (IOException e) {
    e.printStackTrace();
}

特此记录
感谢:https://m635674608.iteye.com/blog/1936281

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值