WebLogic Server 6.1 Code Examples, BEA Systems, Inc.

Package examples.iiop.ejb.stateless.cppclient

WebLogic Server 6.1 Examples: Package examples.iiop.ejb.stateless.cppclient
#include "CosNaming_c.hh"
#include "client_c.hh"

USE_STD_NS

class TradeResultImpl : public virtual ::examples::iiop::ejb::stateless::OBV_TradeResult,
                  public virtual CORBA::DefaultValueRefCountBase
{
  public:
  TradeResultImpl() : OBV_TradeResult () {}
  virtual ~TradeResultImpl(){}
  CORBA_ValueBase* _copy_value() {
    return new TradeResultImpl ();
  }
};

class TradeResultFactory: public ::examples::iiop::ejb::stateless::TradeResult_init
{
  public:
  TradeResultFactory(){}
  virtual  ~TradeResultFactory(){}

  CORBA::ValueBase*  create_for_unmarshal() {
    return new TradeResultImpl();
  }
};

int main(int argc, char* const* argv)
{
  try {
    CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);

    // string to object
    CORBA::Object_ptr o;

    cout << "Getting name service reference" << endl;
    if (argc >= 2 && strncmp (argv[1], "IOR", 3) == 0)
      o = orb->string_to_object(argv[1]);
    else
      o = orb->resolve_initial_references("NameService");

    orb->register_value_factory("RMI:examples.iiop.ejb.stateless.TradeResult:8B2D783A25536FE8:216A41BD60B6E922", (CORBA::ValueFactory)new TradeResultFactory);

    // obtain a naming context
    cout << "Narrowing to a naming context" << endl;
    CosNaming::NamingContext_var context = CosNaming::NamingContext::_narrow(o);
    CosNaming::Name name;
    name.length(1);
    name[0].id = "TraderHome_iiop";
    name[0].kind = "";

    // resolve and narrow to RMI object
    cout << "Resolving the naming context" << endl;
    CORBA::Object_var object = context->resolve(name);

    cout << "Narrowing to the TraderHome" << endl;
    examples::iiop::ejb::stateless::TraderHome_var home =
      examples::iiop::ejb::stateless::TraderHome::_narrow(object);
     examples::iiop::ejb::stateless::Trader_ptr bean = home->create();

    CORBA::WChar* stocks[]={L"BEAS", L"MSFT", L"AMZN", L"HWP", 0};
    for (int i=0; i<4; i++) {
      int shares = (i+1) * 100;
      cout << "Buying " << shares << " shares of " << (char*)stocks[i] << endl;
      ::CORBA::WStringValue vl = ::CORBA::WStringValue(stocks[i]);
      examples::iiop::ejb::stateless::TradeResult_var tr = bean->buy(&vl, shares);

      cout << "Bought " << tr->numberTraded() << " shares of " <<
	(char*)(tr->stockSymbol()->_value()) << endl;
    }
  }
  catch(const CORBA::Exception& e) {
    cout << "Failure: " << e << endl;
  }
  return 0;
}

Documentation is available at
http://e-docs.bea.com/wls/docs61

Copyright © 2001 BEA Systems, Inc. All Rights Reserved.
Documentation is available at
http://e-docs.bea.com/wls/docs61

Copyright © 2001 BEA Systems, Inc. All Rights Reserved.