⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.cpp

📁 150个非常经典的例子 全部代码全部在JDK中调试成功
💻 CPP
字号:
// Client.cpp
#include <fstream.h>

#include <OB/CORBA.h>
#include <OB/OBORB.h>

// Include 由IDL生成的文件
#include <java/lang/Exception.h>
#include <java/lang/Throwable.h>
#include <javax/ejb/CreateException.h>
#include <javax/ejb/RemoveException.h>
#include <ejbinterop/Logger.h>
#include <ejbinterop/LoggerHome.h>
//为LoggerHome对象提供一个ORB和一个corbaname URL,
//在服务器上记录一个简单的字符串信息

void
run(CORBA::ORB_ptr orb, const char* logger_home_url)
{
  cout << "Looking for: " << logger_home_url << endl;

  //在名字上下文中查询由corbaname URL指向的LoggerHome对象
  CORBA::Object_var home_obj
    = orb->string_to_object(logger_home_url);

  //执行一个安全的downcast
  ejbinterop::LoggerHome_var home
    = ejbinterop::LoggerHome::_narrow(home_obj.in());

  assert(!CORBA::is_nil(home));

  // 创建一个Logger EJB的引用
  ejbinterop::Logger_var logger = home->create();

  CORBA::WStringValue_var msg =
    new CORBA::WStringValue((const CORBA::WChar*)L"Message 
      from a C++ client");
  
  cout << "Logging..." << endl;

  //记录我们的信息
  logger->logString(msg);

  // 告诉应用服务器,我们将在不是使用这个引用
  logger->remove();

  cout << "Done" << endl;
}
//简单的main函数,检验参数,创建一个ORB同时处理异常
int
main(int argc, char* argv[])
{
  int exit_code = 0;
  CORBA::ORB_var orb;

  try {

  //检测参数
  if (argc != 2) {
    cerr << "Usage: Client <corbaname URL of LoggerHome>" << endl;
    return 1;
  }

  //创建一个 ORB
  orb = CORBA::ORB_init(argc, argv);

  //注册factories

  
  CORBA::ValueFactory factory = new java::lang::Throwable_init;
  orb -> register_value_factory(java::lang::Throwable::_OB_id(),
    factory);
  factory -> _remove_ref();

  factory = new java::lang::Exception_init;
  orb -> register_value_factory(java::lang::Exception::_OB_id(),
    factory);
  factory -> _remove_ref();

  factory = new javax::ejb::CreateException_init;
  orb -> 		    register_value_factory(javax::ejb::CreateException::_OB_id(),
      factory);
  factory -> _remove_ref();

  factory = new javax::ejb::RemoveException_init;
  orb ->
    register_value_factory(javax::ejb::RemoveException::_OB_id(),
      factory);
  factory -> _remove_ref();

  //执行这个程序
  run(orb, argv[1]);

} catch(const CORBA::Exception& ex) {
  // 处理任何CORBA相关的异常
  cerr << ex._to_string() << endl;
  exit_code = 1;
}

  // 释放任何ORB资源
  if (!CORBA::is_nil(orb)) {
    try {
      orb -> destroy();
    } catch(const CORBA::Exception& ex) {
      cerr << ex._to_string() << endl;
      exit_code = 1;
    }
  }

  return exit_code;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -