• 测试技术
  • 博客
  • 视频
  • 开源
  • 论坛
  • 沙龙
  • 下载
  • 杂志
  • 招聘

字号: | 推荐给好友 上一篇 | 下一篇

Java CORBA入门

发布: 2007-4-29 00:13 | 作者: seanhe | 来源: jdeveloper | 查看: 66次 | 进入软件测试时代论坛讨论

软件测试时代
Below is a simple example of a CORBA program
1. produce a idl file like this
   hello.idl
   module HelloApp {
     interface Hello    {        
         string sayHello();
    };
  };

2. produce stub and skeleton files through idltojava.exe
   idltojava hello.idl
   idltojava is now named as idlj.exe and is included in the JDK.

3. write a server program like this

// 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 world !!\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);
}
    }
}   

4. write a client program like this
// 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);
}
    }
}

5. complie these files

   javac *.java HelloApp/*.java

6. run the application
  
  a. first you've to run the Name Service prior to the others likethis
     c:\>tnameserv
  b. run server
     c:\>java HelloServer
  c. run client
     c:\>java HelloClient

文章来源于软件测试时代 http://www.testage.net/


软件测试时代开课信息
最新专题
最新新闻
Google
排行榜
分类最新内容
关于我们 | 合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2007 TestAge(测试时代) 北京慧灵科技有限公司 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备05002925号
技术支持和业务联系:info@testage.com.cn 电话:010-51297073