2015-11-02 20 views
0

我得到這個奇怪的錯誤,當我運行我的簡單的CORBA服務器(這是我建跟隨這tutorial0org.omg.CORBA.Object上的錯誤objRef = orb.resolve_initial_references(「NameService」);

這裏是我的代碼:

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 

回答

0

User Reimus張貼解答曾幾何時WHI我報告的不工作。事實證明,它閃爍着一個超級快速的錯誤信息,說明該端口正在使用中。當我解決這個問題時,他的原始解決方案奏效了。 Reimus,請轉發你的回答,以便我可以接受。在此之前,這裏是他原來的答案:

運行

start tnameserv -ORBInitialPort 1051 

確保端口1051是不是已經在使用別的東西。你應該看到

TNameserv