java - org.omg.CORBA.Object objRef = orb.resolve_initial_references ("NameService"上出错);

标签 java eclipse corba

当我运行简单的 CORBA 服务器(我按照本教程构建的服务器0)时,遇到了这个奇怪的错误

这是我的代码:

import org.omg.CORBA.ORB;
import org.omg.CORBA.ORBPackage.InvalidName;
import org.omg.CosNaming.NameComponent;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;
import org.omg.CosNaming.NamingContextPackage.CannotProceed;
import org.omg.CosNaming.NamingContextPackage.NotFound;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAHelper;
import org.omg.PortableServer.POAManagerPackage.AdapterInactive;
import org.omg.PortableServer.POAPackage.ServantNotActive;
import org.omg.PortableServer.POAPackage.WrongPolicy;

import HotelServer.Hotel;
import HotelServer.HotelHelper;
import HotelServer.HotelImpl;


public class StartServers {

    public static void main(String[] args) throws AdapterInactive, InvalidName, ServantNotActive, WrongPolicy, NotFound, CannotProceed, org.omg.CosNaming.NamingContextPackage.InvalidName {
          // create and initialize the ORB //// get reference to rootpoa & activate the POAManager
        ORB orb = ORB.init(args, null);
        POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
        rootpoa.the_POAManager().activate();

        HotelImpl hotel = new HotelImpl();
        hotel.setOrb(orb);

        // get object reference from the servant
        org.omg.CORBA.Object ref = rootpoa.servant_to_reference(hotel);
        Hotel hotelref = HotelHelper.narrow(ref);

        org.omg.CORBA.Object objRef =  orb.resolve_initial_references("NameService");
        NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);

        NameComponent path[] = ncRef.to_name( "hotel1" );
        ncRef.rebind(path, hotelref);

        orb.run();

        System.out.println("ORB Server is running...");
    }

}

错误发生在这一行:org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");

这是完整的错误:

com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl <init>
WARNING: "IOP00410201: (COMM_FAILURE) Connection failure: socketType: IIOP_CLEAR_TEXT; hostname: localhost; port: 1050"
org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No
    at com.sun.corba.se.impl.logging.ORBUtilSystemException.connectFailure(Unknown Source)
    at com.sun.corba.se.impl.logging.ORBUtilSystemException.connectFailure(Unknown Source)
    at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(Unknown Source)
    at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(Unknown Source)
    at com.sun.corba.se.impl.transport.SocketOrChannelContactInfoImpl.createConnection(Unknown Source)
    at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.beginRequest(Unknown Source)
    at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.request(Unknown Source)
    at com.sun.corba.se.impl.resolver.BootstrapResolverImpl.invoke(Unknown Source)
    at com.sun.corba.se.impl.resolver.BootstrapResolverImpl.resolve(Unknown Source)
    at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(Unknown Source)
    at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(Unknown Source)
    at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(Unknown Source)
    at com.sun.corba.se.impl.orb.ORBImpl.resolve_initial_references(Unknown Source)
    at StartServers.main(StartServers.java:34)
Caused by: java.net.ConnectException: Connection refused: connect
    at sun.nio.ch.Net.connect0(Native Method)
    at sun.nio.ch.Net.connect(Unknown Source)
    at sun.nio.ch.Net.connect(Unknown Source)
    at sun.nio.ch.SocketChannelImpl.connect(Unknown Source)
    at java.nio.channels.SocketChannel.open(Unknown Source)
    at com.sun.corba.se.impl.transport.DefaultSocketFactoryImpl.createSocket(Unknown Source)
    ... 12 more

最佳答案

User Reimus不久前发布了一个答案,我报告该答案不起作用。事实证明,它正在闪烁一条超快的错误消息,表明该端口正在使用中。当我解决这个问题时,他原来的解决方案起作用了。 Reimus,请重新发布您的答案,以便我可以接受。在此之前,这是他的原始答案:

运行

start tnameserv -ORBInitialPort 1051

确保端口 1051 尚未用于其他用途。你应该看到

TNameserv

关于java - org.omg.CORBA.Object objRef = orb.resolve_initial_references ("NameService"上出错);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33484031/

相关文章:

java - Dalvik内存分配

java - 如何将 TextView 准确放置在用户在 Eclipse for Android 中长按的位置

eclipse - 使用 Tomcat 和 Eclipse 增强 DataNucleus JPA 运行时

java - 使用 Java 和 Corba 识别点对点文件共享中的客户端。并在 2 个客户端之间构建套接字套接字

java - 如何使用拦截器在 CORBA 中操作发送到远程对象的参数

java - 在Java中用数组表示的数字相乘?

Java 牛顿迭代

java - 将 java-ee WAR 部署到 ColdFusion 服务器(对于混合 Java - ColdFusion 应用程序)

java - 在 libgdx 中导入扩展名为 md2 的对象

c++ - CORBA : How to pass a QT object as a parameter