import org.omg.CORBA.ORB;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;
import HelloApp.Hello;
import HelloApp.HelloHelper;
public class HelloClient
{
  static Hello helloImpl;
  public static void main(String args[]){
     try{
      // create and initialize the ORB
      String[] a={"–ORBInitialPort","80","–ORBInitialHost","10.88.129.155"};
//     String   nameservice   =   "corbaloc::10.88.129.155:5555/NameService"; 
//     String[] a={"-ORBInitRef",   "NameService="+nameservice   };
      ORB orb = ORB.init(a, null);
      System.out.println("ORB initialised\n");
      
      // get the root naming context
      org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
      // Use NamingContextExt instead of NamingContext, 
      // part of the Interoperable naming Service.  
      NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
 
      // resolve the Object Reference in Naming
      String name = "Hello1";
      helloImpl = HelloHelper.narrow(ncRef.resolve_str(name));
      
     // System.out.println("Obtained a handle on server object: " + helloImpl);
      System.out.println(helloImpl.sayHello());
      //helloImpl.shutdown();
   } 
     catch (Exception e) {
        System.out.println("ERROR : " + e) ;
      e.printStackTrace(System.out);
   } 
  } //end main
} // end class//地址明明写的是10.88.129.155 端口号明明写80结果异常如下
ORB initialisedERROR : org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No
org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No
at com.sun.corba.se.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2172)
2009-12-11 14:47:40 com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl <init>
警告: "IOP00410201: (COMM_FAILURE) Connection failure: socketType: IIOP_CLEAR_TEXT; hostname: 10.88.129.159; port: 900"
org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No
at com.sun.corba.se.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2172)
at com.sun.corba.se.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2193)
at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:205)
at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:218)
at com.sun.corba.se.impl.transport.SocketOrChannelContactInfoImpl.createConnection(SocketOrChannelContactInfoImpl.java:101)
at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.beginRequest(CorbaClientRequestDispatcherImpl.java:152)
at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.request(CorbaClientDelegateImpl.java:118)
at com.sun.corba.se.impl.resolver.BootstrapResolverImpl.invoke(BootstrapResolverImpl.java:74)
at com.sun.corba.se.impl.resolver.BootstrapResolverImpl.resolve(BootstrapResolverImpl.java:107)
at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(CompositeResolverImpl.java:22)
at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(CompositeResolverImpl.java:22)
at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(CompositeResolverImpl.java:22)
at com.sun.corba.se.impl.orb.ORBImpl.resolve_initial_references(ORBImpl.java:1155)
at HelloClient.main(HelloClient.java:20)
Caused by: java.net.ConnectException: Connection refused: connect
at sun.nio.ch.Net.connect(Native Method)
at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:507)
at java.nio.channels.SocketChannel.open(SocketChannel.java:146)
at com.sun.corba.se.impl.transport.DefaultSocketFactoryImpl.createSocket(DefaultSocketFactoryImpl.java:60)
at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:188)
... 11 more
at com.sun.corba.se.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2193)
at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:205)
at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:218)
at com.sun.corba.se.impl.transport.SocketOrChannelContactInfoImpl.createConnection(SocketOrChannelContactInfoImpl.java:101)
at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.beginRequest(CorbaClientRequestDispatcherImpl.java:152)
at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.request(CorbaClientDelegateImpl.java:118)
at com.sun.corba.se.impl.resolver.BootstrapResolverImpl.invoke(BootstrapResolverImpl.java:74)
at com.sun.corba.se.impl.resolver.BootstrapResolverImpl.resolve(BootstrapResolverImpl.java:107)
at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(CompositeResolverImpl.java:22)
at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(CompositeResolverImpl.java:22)
at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(CompositeResolverImpl.java:22)
at com.sun.corba.se.impl.orb.ORBImpl.resolve_initial_references(ORBImpl.java:1155)
at HelloClient.main(HelloClient.java:20)
Caused by: java.net.ConnectException: Connection refused: connect
at sun.nio.ch.Net.connect(Native Method)
at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:507)
at java.nio.channels.SocketChannel.open(SocketChannel.java:146)
at com.sun.corba.se.impl.transport.DefaultSocketFactoryImpl.createSocket(DefaultSocketFactoryImpl.java:60)
at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:188)
... 11 more
警告: "IOP00410201: (COMM_FAILURE) Connection failure: socketType: IIOP_CLEAR_TEXT; hostname: 10.88.129.159; port: 900"
这是为什么呢 我曾把端口号改成了5555 结果还是报读的端口号是900请高手来一起看看到底是什么问题 我就是通过客户端访问10.88.129.155 端口 80的服务器
老是连接失败。

解决方案 »

  1.   

    这个错误信息里面的ip应该是你本机的ip和端口。
    该错误信息只是描述了连接失败,并没有显示失败的原因。
    还有没有错误信息。
      

  2.   

    ERROR : org.omg.CORBA.COMM_FAILURE:  vmcid: SUN  minor code: 201  completed: No
    org.omg.CORBA.COMM_FAILURE:  vmcid: SUN  minor code: 201  completed: No 

    这个地方应该是抛出的错误信息的描述
    这个错误应该是jndi有问题。
    看有没有j2ee.jar,修改一下jndi.properties文件.
    java.naming.provider.url默认的是localhost
      

  3.   

    我在本地启动客户端和服务器可以相连的,在客户端我看了没有j2ee.jar应该在那里找呢
      

  4.   

    问题已经解决了,网上的例子有问题
    应该是这么写
    // A sample Java IDL object client application.
    import java.util.Properties;import org.omg.CORBA.ORB;
    import org.omg.CosNaming.NamingContextExt;
    import org.omg.CosNaming.NamingContextExtHelper;import HelloApp.Hello;
    import HelloApp.HelloHelper;
    public class HelloClient
    {
      static Hello helloImpl;
      public static void main(String args[]){
         try{
          // create and initialize the ORB
          //String[] a={"–ORBInitialPort","80","–ORBInitialHost","10.88.129.155"};
    //     String   nameservice   =   "corbaloc::10.88.129.155:5555/NameService"; 
    //     String[] a={"-ORBInitRef",   "NameService="+nameservice   };
          Properties props = new Properties();    
          // 生成一个ORB,并初始化,这个和Server端一样    
           props .put("org.omg.CORBA.ORBInitialPort", "1050");    
           props.put("org.omg.CORBA.ORBInitialHost", "10.88.129.155");    
           ORB orb = ORB.init(args, props); 
    //      ORB orb = ORB.init(a, null);
          System.out.println("ORB initialised\n");
          
          // get the root naming context
          org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
          // Use NamingContextExt instead of NamingContext, 
          // part of the Interoperable naming Service.  
          NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
     
          // resolve the Object Reference in Naming
          String name = "Hello1";
          helloImpl = HelloHelper.narrow(ncRef.resolve_str(name));
          
         // System.out.println("Obtained a handle on server object: " + helloImpl);
          System.out.println(helloImpl.sayHello());
          //helloImpl.shutdown();
       } 
         catch (Exception e) {
            System.out.println("ERROR : " + e) ;
          e.printStackTrace(System.out);
       } 
      } //end main
    } // end class
      

  5.   

    远程访问是需要使用JNDI来进行远程寻址的。
    连接远程对象之后才能进行通信。
    所以我首先考虑的是你的JNDI的配置是否有问题。
    祝贺你
    白让我忙了打字了。。
      

  6.   

    我的问题和你的很类似 
    jacorb开发corba,客户端和服务端同时在win下或者linux下运行没有问题。  但是服务器端放到linux下,客户端win就发生了无法响应的情况。 
      

  7.   

    Properties props = new Properties();   
      // 生成一个ORB,并初始化,这个和Server端一样   
      props .put("org.omg.CORBA.ORBInitialPort", "1050");   
      props.put("org.omg.CORBA.ORBInitialHost", "10.88.129.155"); 这几句让我找了很久- -  
      

  8.   

    我是corba的初学者,谁能给我个在Unix/linux上jacorb的安装文档啊?一直在linux上没有安装成功,小弟邮箱:[email protected],谢了!!!
      

  9.   

    能把整个helloCorba发给我吗?[email protected]
      

  10.   

    我也出现了同样的问题,按照你的代码修改后又出现了另外的问题,应该是这句:
    org.omg.CORBA.Object ncObj = orb.resolve_initial_references("NameService");
    报以下的错误:
    org.omg.CORBA.OBJECT_NOT_EXIST:   vmcid: 0x0  minor code: 0  completed: No
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase.getSystemException(Unknown Source)
    at com.sun.corba.se.impl.protocol.giopmsgheaders.ReplyMessage_1_0.getSystemException(Unknown Source)
    at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.getSystemExceptionReply(Unknown Source)
    at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.processResponse(Unknown Source)
    at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete(Unknown Source)
    at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(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 com.nm.server.nbif.Server.main(Server.java:40)能否指教一下?