summaryrefslogtreecommitdiff
path: root/cpp/demo/Database/Oracle/occi/Server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/demo/Database/Oracle/occi/Server.cpp')
-rw-r--r--cpp/demo/Database/Oracle/occi/Server.cpp54
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();