diff options
Diffstat (limited to 'cpp/demo/Database/Oracle/occi/Server.cpp')
-rw-r--r-- | cpp/demo/Database/Oracle/occi/Server.cpp | 54 |
1 files changed, 9 insertions, 45 deletions
diff --git a/cpp/demo/Database/Oracle/occi/Server.cpp b/cpp/demo/Database/Oracle/occi/Server.cpp index 7e7c670bf5b..aff2f171ea3 100644 --- a/cpp/demo/Database/Oracle/occi/Server.cpp +++ b/cpp/demo/Database/Oracle/occi/Server.cpp @@ -7,11 +7,9 @@ // // ********************************************************************** -#include <EmpI.h> -#include <DeptI.h> #include <DeptFactoryI.h> #include <Ice/Application.h> -#include <Ice/ServantLocator.h> +#include <OCCIServantLocator.h> #include <occi.h> #include <DbTypesMap.h> @@ -25,35 +23,6 @@ public: virtual int run(int, char*[]); }; -class DefaultServantLocator : public Ice::ServantLocator -{ -public: - - DefaultServantLocator(const Ice::ObjectPtr& servant) : - _servant(servant) - { - } - - virtual Ice::ObjectPtr locate(const Ice::Current&, Ice::LocalObjectPtr&) - { - return _servant; - } - - virtual void finished(const Ice::Current& curr, - const Ice::ObjectPtr& servant, - const Ice::LocalObjectPtr& cookie) - { - } - - virtual void deactivate(const std::string&) - { - } - -private: - Ice::ObjectPtr _servant; -}; - - int main(int argc, char* argv[]) { @@ -68,17 +37,16 @@ HRServer::run(int argc, char* argv[]) const string password = communicator()->getProperties()->getPropertyWithDefault("Oracle.Password", "password"); const string connectString = communicator()->getProperties()->getProperty("Oracle.ConnectString"); - const string empCategory = "Emp"; - const string deptCategory = "Dept"; - + // + // We use a single servant locator and a single category for all Emp and Dept objects + // + const string category = "OCCI"; + Environment* env = 0; StatelessConnectionPool* pool = 0; try { - // - // To Oracle: using an enum parameter for a bitmask is not such a good idea! - // env = Environment::createEnvironment(Environment::Mode(Environment::THREADED_MUTEXED | Environment::OBJECT)); DbTypesMap(env); @@ -87,13 +55,9 @@ HRServer::run(int argc, char* argv[]) Ice::ObjectAdapterPtr adapter = communicator()->createObjectAdapter("HR"); - DeptFactoryIPtr factory = new DeptFactoryI(env, pool, empCategory, deptCategory); - - adapter->addServantLocator(new DefaultServantLocator(new EmpI(factory, env, pool, empCategory, deptCategory)), - empCategory); - - adapter->addServantLocator(new DefaultServantLocator(new DeptI(env, pool, empCategory)), deptCategory); - + DeptFactoryIPtr factory = new DeptFactoryI(env, pool, category); + adapter->addServantLocator(new OCCIServantLocator(factory), category); + adapter->add(factory, communicator()->stringToIdentity("DeptFactory")); adapter->activate(); |