Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

use of OAD

0 views
Skip to first unread message

Ravikumar Ganta

unread,
Apr 26, 2000, 3:00:00 AM4/26/00
to
Hi,

I have a number of servers and I want to use OAD so as to get start a
server when a client invokes a method on the server. But I dont want to
register each and every server with the OAD manually, i.e I dont want to
use oadutil reg everytime. Is there a way in which this can be done.

Thanks,
Ravi.

Abou Bakar Kaleem

unread,
Apr 26, 2000, 3:00:00 AM4/26/00
to
Hey Ravi,

I'm having problems with registering objects with OAD to set their
activation
policies. Could you please tell me how to register objects with OAD.

I've tried the following command:
>oadutil reg -i Project::Server::NewOrderServer -o ns -java
Project.Server.NewOrderServer -a ns -p unshared

Then comes the message that object is successfully registered.
Then I start NewOrderServer and call this utility again.

>oadutil list -full
and it shows that NewOrder is registered but no active implementation.

And my NewOrderServer instantiates an implementation of interface NewOrder
and waits for the client requests.

Could you help me how to fix this problem ?

thanx

Abou Bakar

Ravikumar Ganta wrote:

--
Abou Bakar Kaleem
App: 3.0.1 a
Schuettstrasse 3
21073 Hamburg
Germany
PH: 0049-40-7675 7988
E-mail: kal...@tu-harburg.de

kaleem.vcf

Vijaykumar Natarajan

unread,
Apr 26, 2000, 3:00:00 AM4/26/00
to Ravikumar Ganta
Hi Ravi,

You can register all the objects once, after that as long as you start the OAD
on the same port (by default, that's 16000), and you don't blow away the
impl_rep file that the OAD creates, the OAD will maintain the same
registrations, and you don't have to reregister your servers.

Thanks,
Vijay

vijayn.vcf

Vijaykumar Natarajan

unread,
Apr 26, 2000, 3:00:00 AM4/26/00
to Abou Bakar Kaleem
Hi Abou,

You are using the unshared server mode, which means your servers will not be
shared. This also implies that *manually started* servers will not be handled by
the OAD and it will launch new servers every time a different client tries to
bind to this object. If you want the OAD to see your server objects, use the
-shared mode when registering the server.

Thanks,
Vijay

Abou Bakar Kaleem wrote:

> Hey Ravi,
>
> I'm having problems with registering objects with OAD to set their
> activation
> policies. Could you please tell me how to register objects with OAD.
>
> I've tried the following command:
>
> >oadutil reg -i Project::Server::NewOrderServer -o ns -java
> Project.Server.NewOrderServer -a ns -p unshared
>
> Then comes the message that object is successfully registered.
> Then I start NewOrderServer and call this utility again.
>
> >oadutil list -full
> and it shows that NewOrder is registered but no active implementation.
>
> And my NewOrderServer instantiates an implementation of interface NewOrder
> and waits for the client requests.
>
> Could you help me how to fix this problem ?
>
> thanx
>
> Abou Bakar
>

> Ravikumar Ganta wrote:
>
> > Hi,
> >
> > I have a number of servers and I want to use OAD so as to get start a
> > server when a client invokes a method on the server. But I dont want to
> > register each and every server with the OAD manually, i.e I dont want to
> > use oadutil reg everytime. Is there a way in which this can be done.
> >
> > Thanks,
> > Ravi.
>

vijayn.vcf

Vijaykumar Natarajan

unread,
Apr 26, 2000, 3:00:00 AM4/26/00
to Ravikumar Ganta
Hi Ravi,
Please post to the newsgroup w/ followup questions. While we'd love to help you,
direct support is too time consuming and you are bound to get better response on
the newsgroup.

Anyway, to answer your question. If can have multiple interfaces. In order to
have a single registration for all of them, your interfaces must all be hosted
on the same server on the same POA( you could of course break it up into
multiple servers, but each server requires one registration). Then you can use
BY_POA BIND_SUPPORT policy and register the POA with the OAD. Then all
interfaces associated w/ that POA are accessible through the OAD with one
registration command. See the Programmers guide for details.

Thanks,
Vijay

Ravikumar Ganta wrote:

> Hi Vijay,
>
> Thank you for the help. But the problem is that we have about 400 interfaces
> and I
> have to register each and every one of them with the OAD. I dont know how
> many
> more we are going to generate.I dont want to manually load each and every
> interface
> implementation, even if I write a script I have to store all the names
> someplace and it
> is error prone. Is there a way by which I can register these implementations
> with the
> OAD while using irep to genarate the repository.
>
> Thanks,
> Ravi.


>
> ----- Original Message -----
> From: "Vijaykumar Natarajan" <vnata...@inprise.com>
> Newsgroups: inprise.public.visibroker
> To: "Ravikumar Ganta" <rga...@hekimian.com>
> Sent: Wednesday, April 26, 2000 1:28 PM
> Subject: Re: use of OAD
>
> > Hi Ravi,
> >
> > You can register all the objects once, after that as long as you start the
> OAD
> > on the same port (by default, that's 16000), and you don't blow away the
> > impl_rep file that the OAD creates, the OAD will maintain the same
> > registrations, and you don't have to reregister your servers.
> >
> > Thanks,
> > Vijay
> >

vijayn.vcf

Ravikumar Ganta

unread,
Apr 26, 2000, 3:00:00 AM4/26/00
to
We are using Visibroker 3.3 for C++ and we are using BOA. Is it still possible to
do?

Ravi.

Vijaykumar Natarajan

unread,
Apr 26, 2000, 3:00:00 AM4/26/00
to Abou Bakar Kaleem
Hi Abou,

Please post questions to the newsgroup and not directly to me.


Thanks,
Vijay
Comments below:

Abou Bakar Kaleem wrote:

> Hey,
>
> thanx for your reply.
>
> Actually I wanna use unshared server.
>
> Interface name: NewOrder
> Server name: NewOrderServer ----> instantiates the implementation of the
> interface NewOrder and registers it with BOA by
> boa.obj_is_ready(NewOrder no) and boa.impl_is_ready();
> Interface implementation class: NewOrderImpl
> Name of the impl object: ns
>
> if I manually start the server, I start with the following command:
>
> > vbj Project.Server.NewOrderServer ns
>
> my client binds with this call
>
> NewOrder no = NewOrderHelper.bind(orb, "ns");
>
> and it works.
>
> But the default behaviour of the server is shared and I want that it should behave
> as
> unshared server that means when ever another client or thread wants to bind with
> this object, a new object implementation should be created by the server.

Registering the Server as unshared is not a problem. However, this implies that hte OAD
will not take ownership of any manually started servers. When your client binds to the
server, it will talk to the OAD which will launch your server for you.

> I registered the server with the oadutil command.


> > oadutil reg -i Project::Server::NewOrderServer -o ns
> -java Project.Server.NewOrderServer -a ns -p unshared
>

> Then run my client, as you said, the object is registered with OAD and should be
> activated by OAD if a client wants to bind with it but I get the following error
> message:

Your interface name does not directly translate to the repository ID that your object
has. Since the OAD deals only w/ repository IDs it expects the interface to repository
ID conversion process that it does, to give the repository ID.
Your object has the repository ID
IDL:visigenic.com/Project/ProjImpl/Server/NewOrder:1.0. However the OAD will convert
your interface name to IDL:Project/Server/NewOrderServer:1.0 which is not the same.
This is why the OAD is not finding your server registration. Use the -r option to
register the server with the OAD.

More follows:

> Excpetion caught in newOrderTxn: org.omg.CORBA.NO_IMPLEMENT[completed=MAYBE,
>
> reason = Could not locate the following object:
> repository id : IDL:visigenic.com/Project/ProjImpl/Server/NewOrder:1.0
> object name : ns

Some unrelated comments.
1. The interface name that you are passing in your registration doesn't look right. How
do you come up with that? From your repID, I would guess that the absolute name of your
interface should be
::Project::ProjImpl::Server::NewOrder, not Project::Server::NewOrderServer (You appear
to be confusing between the class name of your main entry point and the IDL interface
that you are registering w/ the OAD).

2. You have used the pragma prefix "visigenic.com". Typically, you should be using a
pragma prefix that reflects your organization and not ours. i.e. Don't use
visigenic.com as that implies (conventionally) that the specified IDL is defined by
Visigenic.

Thanks,
Vijay

vijayn.vcf

Abou Bakar Kaleem

unread,
Apr 26, 2000, 3:00:00 AM4/26/00
to
Hi Vijay,

thanks for your help.
You are right, I was confused with Interface name and server class name.
I've just tried it and it has worked.
Now comes another problem, every call to this server object opens a new window.

Is it not possible to reuse the server objects ?

Actually I'm doing TPC-C benchmarking with ITS1.1, Oracle and NT Server.
My client is multithreaded which implies that it simulates multiple clients and I've to run
the test for 30-40 minutes and if every call to the neworder server opens a new window then
in just couple of minutes my machine will be down.

Could you guide me in this regard ?

Thanks for your help.

Abou

kaleem.vcf

Vijaykumar Natarajan

unread,
Apr 26, 2000, 3:00:00 AM4/26/00
to Abou Bakar Kaleem

Abou Bakar Kaleem wrote:
> Hi Vijay,
>
> thanks for your help.
> You are right, I was confused with Interface name and server class name.
> I've just tried it and it has worked.
> Now comes another problem, every call to this server object opens a new window.
>
> Is it not possible to reuse the server objects ?

But your earlier mail indicated you didn't want to share servers (as in use the unshared server
policy). You seem to be contradicting yourself here.

> Actually I'm doing TPC-C benchmarking with ITS1.1, Oracle and NT Server.
> My client is multithreaded which implies that it simulates multiple clients and I've to run
> the test for 30-40 minutes and if every call to the neworder server opens a new window then
> in just couple of minutes my machine will be down.

Then you should be using the shared server mode (where all clients will share the same server).
Not the unshared server mode as you had suggested earlier.

Thanks,
Vijay

vijayn.vcf

Abou Bakar Kaleem

unread,
Apr 27, 2000, 3:00:00 AM4/27/00
to
Good Morning Vijay,
With shared server the performance of the system is very poor because of the serial access to the
server object as their are multiple clients running on the client side.
I did not know that the unshared mode instantiates a new server obj each time when the next request
comes. Actually I want to have maximum performance from my system. As it is the performance i.e
number of new order transactions completed per minute that I'm going to measure.

Is there any way to do some kind of load balancing ?
There could be more than one server running and the request could be routed to a free server.


Vijaykumar Natarajan wrote:

Homepage: http://www.tu-harburg.de/~seak3009

kaleem.vcf

Vijaykumar Natarajan

unread,
Apr 27, 2000, 3:00:00 AM4/27/00
to Abou Bakar Kaleem
Let me understand you here. You want a pool of shared servers? That is every client doesn't launch a
new server but there is more than one server....right?

Let me know.
Vijay
Comments below

Abou Bakar Kaleem wrote:

> Good Morning Vijay,
>
> With shared server the performance of the system is very poor because of the serial access to the
> server object as their are multiple clients running on the client side.

That is totally untrue. The Visibroker ORB is multithreaded and multiple clients can talk to the same
server without being serialized. Please read the Programmers Guide for a description of Visibroker's
thread and connection management features.

> I did not know that the unshared mode instantiates a new server obj each time when the next request
> comes. Actually I want to have maximum performance from my system. As it is the performance i.e
> number of new order transactions completed per minute that I'm going to measure.

There are also other ways to improve the performance of your system. See the POA chapter in the
Programmers guide for setting up your objects such that the best performance can be achieved.


> Is there any way to do some kind of load balancing ?
> There could be more than one server running and the request could be routed to a free server.

Load balancing through the OAD is not currently possible. Please look at AppCenter if you want these
features.

Thanks,
Vijay

vijayn.vcf

Abou Bakar Kaleem

unread,
Apr 27, 2000, 3:00:00 AM4/27/00
to
Hey Vijay,

Yes I wanna have a pool of shared server that the multithreaded can access.
I'm using JDBC DirectConnect driver to connect with my database.

I think in ITS there is no POA, I read nothing about POA in the documentation, only abou BOA.

Is there any performance bottleneck using JDBC DirectConnect as according to the documentation
restrictions are:
- Only one database can take part in the transaction
- The transaction work with one database is restricted to one process.

What is meant by "one process" here ?

thanx

Abou

kaleem.vcf
0 new messages