You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java/CORBA教程运行Server遇COMM_FAILURE错误求助

CORBA服务启动连接拒绝问题修复方案

问题核心

启动Server.java时触发COMM_FAILURE,根源是代码尝试连接默认端口900的命名服务,但你实际启动的ORBD/tnameserv在1050/1051端口,且启动命令参数格式错误导致服务找不到正确的命名服务地址。

修复步骤

1. 修正Server启动命令的参数格式

你当前的启动命令参数格式错误,CORBA的ORB参数必须以-开头,正确命令如下:

  • 若使用ORBD(1050端口):
    java Server -ORBInitialPort 1050 -ORBInitialHost localhost
    
  • 若使用tnameserv(1051端口):
    java Server -ORBInitialPort 1051 -ORBInitialHost localhost
    

注意:命令中-ORBInitialPort和-ORBInitialHost必须作为参数前缀,不能省略-。

2. 匹配命名服务类型与代码调用

你的代码中调用的是NameService:

org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
  • tnameserv默认提供的就是NameService,对应1051端口
  • ORBD也包含NameService,需确保ORBD启动时未修改默认配置

3. 验证端口监听状态

确认ORBD/tnameserv确实在指定端口监听:

  • Windows系统执行:
    netstat -ano | findstr :1050
    
  • Linux/macOS系统执行:
    lsof -i :1050
    

如果没有返回结果,说明服务未正常启动,需重新启动ORBD/tnameserv。

4. 代码内显式指定ORB参数(可选)

若不想每次启动都加命令行参数,可在初始化ORB时直接指定参数:

import org.omg.CORBA.ORB;

public class Server {
    public static void main(String[] args) {
        // 显式指定ORB参数
        String[] orbArgs = {"-ORBInitialPort", "1050", "-ORBInitialHost", "localhost"};
        ORB orb = ORB.init(orbArgs, null);
        
        // 后续代码...
        org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
    }
}

内容的提问来源于stack exchange,提问作者user3067847

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 10:05:23