2

我是 CORBA 和 JacORB 的新手。我正在为我的第一个使用 CORBA 和 JacORB 的 Hello World 应用程序而苦苦挣扎。

这是我得到的最新错误:

Nov 04, 2013 9:52:19 AM com.sun.corba.se.impl.transport.SocketOrChannelConnectionIm <init>
WARNING: "IOP00410201: (COMM_FAILURE) Connection failure: socketType: IIOP_CLEAR_TEXT;      hostname: localhost; port: 7070"
org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No

这是我的服务器导致该错误的原因:

    Properties props = new Properties();  
    props.put("org.omg.CORBA.ORBInitialPort","7070");
    props.put("org.omg.CORBA.ORBInitialHost","localhost");
    ORB orb = ORB.init(args, props);
    try {
        //
        POA poa = POAHelper.narrow(orb
                .resolve_initial_references("RootPOA"));
        poa.the_POAManager().activate();

        // Servant
        HelloVnImpl hello = new HelloVnImpl();
        // get servant reference
        Object o = poa.servant_to_reference(hello);
        HelloVn hVnRef = HelloVnHelper.narrow(o);

        // Get root naming context
        Object objRef = orb.resolve_initial_references("NameService");//Error
        NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);

在互联网上环顾四周,问题显然是我的名称服务,但我想我开始了。

C:\Users\Paul>ns -ORBInitRef.NameService=corbaloc::localhost:7070/NameService
Nov 04, 2013 9:38:25 AM org.jacorb.config.JacORBConfiguration <init>
WARNING: no properties found for configuration jacorb
Nov 04, 2013 9:38:25 AM org.jacorb.orb.ORBSingleton <init>
INFO: created ORBSingleton
Nov 04, 2013 9:38:27 AM org.jacorb.orb.giop.CodeSet getTCSDefault
WARNING: Warning - unknown codeset (Cp1252) - defaulting to ISO-8859-1
Nov 04, 2013 9:38:27 AM org.jacorb.naming.NameServer main
INFO: NS up
Nov 04, 2013 9:38:27 AM org.jacorb.orb.ORB run
INFO: ORB run

现在,我不知道下一步该做什么。请给我一个建议。谢谢你。:)

更新:

这行代码给了我一个空值:

System.out.println(System.getProperty("org.omg.CORBA.ORBClass"));

这是什么意思?。它是否告诉我我的名称服务器有问题?希望看到你的建议。谢谢

4

1 回答 1

1

设置服务器和命名服务 (NS) 的方式存在一些问题:

1) 您在服务器代码中设置的两个属性 (org.omg.CORBA.ORBInitialPortorg.omg.CORBA.ORBInitialHost) 不是 JacORB 属性。假设您希望服务器侦听端口 7070 上的请求,那么您希望像这样设置“OAAddress”属性:

props.put("OAAdress", "iiop://localhost:7070");

2) 选项-ORBInitRef.NameService=corbaloc::localhost:XXX/NameService应该是让服务器定位 NS 而不是 NS。请注意,“XXX”是NS的监听端口,不应是“7070”。

我建议您看一下 hello 演示,其中包括工作服务器和客户端,它们要简单得多。

于 2013-12-13T23:31:45.630 回答