Chinaunix首页 | 论坛 | 博客
  • 博客访问: 272628
  • 博文数量: 124
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 21
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-20 14:44
文章分类

全部博文(124)

文章存档

2020年(1)

2018年(2)

2016年(2)

2015年(6)

2014年(10)

2013年(23)

2012年(7)

2011年(18)

2010年(15)

2009年(8)

2007年(8)

2006年(23)

2005年(1)

我的朋友

分类:

2010-05-23 11:31:01

  1. 定义idl文件。Hello.idl
    module HelloApp
    {
      interface Hello
      {
        string sayHello();
      };
    };
    moudule在C++中被映射为namespace,而在java中则被映射为package。
    interface定义一个个服务的对象。在C++中是class,在java中为interface。
  2. 编译生成客户端和服务端程序。
    idl -poa -base Hello.idl. 其中poa是表示生成服务端代码。-base表示生成客户端代码。
    分别为HelloS.cxx, HelloS.hh; 和HelloC.cxx,Hello.hh;
    其实编译server端需要,所有的这四个文件。而编译客户端只需要后两个文件。所以生成服务端代码需要-base 和-poa参数,而如果只生成客户端代码则只要-base就可以了。
  3. 实现服务端代码,完成服务器。
    生成服务端代码需要两个部分。
    • 实现上面定义的interface类,完成其定义的函数实现。
    • 编写主函数。
  4. 编写实现类。暂时定名为HelloImpl.cpp
    HelloImpl必须派生于POA_HelloApp::Hello类(当没有HelloApp module时,需要拍剩余POA_Hello类,这是corba的一部分,放心实现吧)。
    类的实现很简单,只需要返回一个字符串即可。
  5. 编写主函数
    //获取orb;
    CORBA::ORB_var global_orb = CORBA::ORB_init(argc, argv);
    CORBA::Object_var tmp_ref;
    //get POA;
    tmp_ref = global_orb->resolve_initial_references("RootPOA");
    PortableServer::POA_var root_poa =PortableServer::POA::_narrow(tmp_ref);
    //创建服务程序并绑定。绑定后,客户端由”Hello“就可以得到该对象了。
            the_HelloApp_Hello =new  HelloImpl();
            oid = root_poa->activate_object(the_HelloApp_Hello);
            tmp_ref = root_poa->id_to_reference(oid);
            name = default_context->to_name("Hello");
            default_context->rebind(name, tmp_ref);
    //激活并运行,只有被激活了。客户端才能得到该对象。
            root_poa->the_POAManager()->activate();//此时服务器打开端口开始监听
            global_orb->run();//此时服务器开始处理服务请求!

阅读(1142) | 评论(0) | 转发(0) |
0

上一篇:ognl

下一篇:ant 自动生成dojo模板

给主人留下些什么吧!~~