CORBA 介绍之实践练习

1.   建立一个文件名称为HelloApp 扩展 名为 idl 的文件

   module HelloApp {
     interface Hello    {         
         string sayHello();
    };
  };


2.建立 HelloServer.java  文件
// HelloServer.java 
  
import HelloApp.*;

import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;

import java.io.*;
class HelloServant extends _HelloImplBase 
{
    public String sayHello()
    {
       return "/nHello nihao !!/n"; 
    }   
  
}

public class HelloServer {

    public static void main(String args[])
    {
try{
    // create and initialize the ORB
    ORB orb = ORB.init(args, null);

    // create servant and register it with the ORB
    HelloServant helloRef = new HelloServant();
    orb.connect(helloRef);

    // get the root naming context
    org.omg.CORBA.Object objRef = 
orb.resolve_initial_references("NameService");
    NamingContext ncRef = NamingContextHelper.narrow(objRef);

    // bind the Object Reference in Naming
    NameComponent nc = new NameComponent("Hello", "");
    NameComponent path[] = {nc};
    ncRef.rebind(path, helloRef);

    // wait for invocations from clients
            java.lang.Object sync = new java.lang.Object();
            synchronized (sync) {
                sync.wait();
            }

} catch (Exception e) {
    System.err.println("ERROR: " + e);
    e.printStackTrace(System.out);
}
    }
}    

3.建立 HelloClient  .java  文件
// HelloClient  .java
import HelloApp.*;
import org.omg.CosNaming.*;
import org.omg.CORBA.*;

public class HelloClient 
{
    public static void main(String args[])
    {
try{
    // create and initialize the ORB
    ORB orb = ORB.init(args, null);

            // get the root naming context
            org.omg.CORBA.Object objRef = 
orb.resolve_initial_references("NameService");
            NamingContext ncRef = NamingContextHelper.narrow(objRef);
            // test
            System.out.println("OK..");                
            // resolve the Object Reference in Naming
            NameComponent nc = new NameComponent("Hello", "");
            NameComponent path[] = {nc};
            Hello helloRef = HelloHelper.narrow(ncRef.resolve(path));

    // call the Hello server object and print results
           //String oldhello = helloRef.lastMessage();
           //System.out.println(oldhello);
    String Hello = helloRef.sayHello();
    System.out.println(Hello);

} catch (Exception e) {
    System.out.println("ERROR : " + e) ;
    e.printStackTrace(System.out);
}
    }


4.开始编译文件

 idlj   -fall   -oldImplBase   HelloApp.idl  

 运行成功后,会在当前类的路径下生成一个HelloApp的文件夹,里面有对应的java类,有兴趣可以看看。

5.编译HelloClient.java和HelloServer.java,和HelloApp文件下的 java文件  

    javac *.java HelloApp/*.java 

6.在当前路径下运行(假设以上的文件存在c:/test之下)
   a. 
       c:/>test/tnameserv  -ORBInitialPort 1050 
  b. run server
     c:/>test/java HelloServer -ORBInitialPort 1050
  c. run client 
     c:/>test/java HelloClient  -ORBInitialPort 1050

 

当你在运行HelloClient  后出现:

OK..

Hello nihao !!

你的测验成功了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值