[omniORB] Choosing specific end-points
Wernke zur Borg
Wernke.zur.Borg at vega.de
Tue Apr 5 10:46:17 BST 2005
Hi Craig,
thanks for your response. I'll try to explain my problem a bit better.
The problem comes up when you run a server with multiple endpoints on
different networks. For simplicity let's say we have endpoints A and B with
IP addresses IP-A and IP-B. Depending on which network a client sits, he
connects to either A or B. When the server encodes IORs for use by clients,
it is mandatory that client A gets IORs with address IP-A encoded, and
client B needs address IP-B encoded in his IORs. Otherwise the client could
not use the IOR for accessing the related object.
For that reason I would need a feature to control the encoding of IORs sent
to clients. The idea was to intercept the client's message and to extract
the client's IP address, from which it would be possible to derive the
correct endpoint, i.e. the correct own IP address to be used in IORs for
that client. But this turned out to become a nightmare (keyword
maintainability!), so we had to look for a cleaner solution. Duncan
suggested to use the IOR IDL to unmarshal and remarshal the IORs, which
would certainly be possible. But you would have to do that for every
incoming and outgoing IORs. I could see a potential problem of relating
incoming and outgoing IOR to each other.
Our way out, as described, is to spawn a new server process for each client.
This new process runs with a fixed endpoint setting that is correct for that
client. This is a relatively simple way, which requires every client to
identify himself so that the correct endpoint can be chosen. It will not be
possible in applications with anonymous clients.
I hope this could clarify my matter. If needed I could give more details on
our solution.
Wernke
> -----Original Message-----
> From: Burton, Craig [mailto:CBurton at verisign.com]
> Sent: 04 April 2005 17:52
> To: Wernke zur Borg
> Subject: RE: [omniORB] Choosing specific end-points
>
> Hi Wernke,
>
> I'm not sure what you mean below by '...have not yet found a way to
> intercept the incoming message for the client's IP...'. Do you mean
> that you wish to examine the arguments/call parameters, or
> simply figure
> out the client's endpoint and message name?
>
> If it is the latter, I could share some of my work in this
> area, if you
> think it would be of help.
>
> Craig
>
> -----Original Message-----
> From: omniorb-list-bounces at omniorb-support.com
> [mailto:omniorb-list-bounces at omniorb-support.com] On Behalf Of Wernke
> zur Borg
> Sent: Monday, April 04, 2005 1:23 AM
> To: omniorb-list at omniorb-support.com
> Subject: RE: [omniORB] Choosing specific end-points
>
>
>
> I do not believe you can switch endpoints at runtime, although I would
> love
> to hear a different statement.
>
> My solution for the very same problem is a server process that listens
> on a
> corbaloc URI and then spawns a new process for each client.
> Each client
> process is started with the appropriate endpoint setting that is valid
> for
> that client.
>
> This scheme requires that each client identifies himself during the
> initial
> connection. For example, you could design your IDL such that
> the client
> has
> to specify his IP address from which you can derive the
> correct endpoint
> to
> serve the client.
>
> Although initially intended I have not found a way to intercept the
> incoming
> message for the client's IP, which would have been the ideal solution.
>
> Wernke
>
>
> > -----Original Message-----
> > From: omniorb-list-bounces at omniorb-support.com
> > [mailto:omniorb-list-bounces at omniorb-support.com] On Behalf
> > Of Vladislav Vrtunski
> > Sent: 01 April 2005 16:29
> > To: omniorb-list at omniorb-support.com
> > Subject: [omniORB] Choosing specific end-points
> >
> > Hello,
> >
> > We are using omniORB to build server that needs to be fail
> safe. Our
> > clients are connected with servants via references with two
> > end-points.
> > Each end-point has its own tcp/ip connection. The reason why we are
> > using such references is redundant network architecture (two LAN
> > adapters on each computer, two independent switches), i.e.
> > two LANs : A
> > and B. One end-point within the reference is used to reach
> the server
> > over network A, while the other one is used to reach the
> server over
> > network B.
> >
> > Question:
> > Is it possible to manage and choose specific end-point within the
> > reference which will be used for further remote calls? As we know,
> > omniORB automatically manages these end-points without our
> influence.
> > What we need is a way to programmatically force omniORB to switch
> > end-points.
> >
> > Regards,
> >
> > --
> > Vladislav Vrtunski
> > DMS Group
> > Serbia & Montenegro
> >
> >
> >
> > _______________________________________________
> > omniORB-list mailing list
> > omniORB-list at omniorb-support.com
> > http://www.omniorb-support.com/mailman/listinfo/omniorb-list
> >
>
>
> _______________________________________________
> omniORB-list mailing list
> omniORB-list at omniorb-support.com
> http://www.omniorb-support.com/mailman/listinfo/omniorb-list
>
>
>
More information about the omniORB-list
mailing list