|
| 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;
}
Copyright © 2001 BEA Systems, Inc. All Rights Reserved.
Copyright © 2001 BEA Systems, Inc. All Rights Reserved.