Bug 3283

Summary: Applying the BiDirectional policy to any POA affects all POAs on the ORB
Product: TAO Reporter: Phil Mesnier <mesnierp>
Component: ORBAssignee: DOC Center Support List (internal) <tao-support>
Status: NEW ---    
Severity: normal    
Priority: P3    
Version: 1.6.3   
Hardware: All   
OS: All   

Description Phil Mesnier 2008-04-01 21:32:18 CDT
I was doing some tests related to Bidir GIOP, and was a little surprised 
to find that even though the policy is applied to a child POA, objects 
on the root POA support bidirectional GIOP.

So I went to the CORBA 3.0.2 spec, section 15.9, and I was shocked, 
Shocked!, to find ambiguous wording:

<quote>
In the absence of a BidirectionalPolicy being passed in the 
PortableServer::POA::create_POA operation, a POA will assume a policy 
value of NORMAL.

A client and a server ORB must each have a BidirectionalPolicy with a 
value of BOTH for bi-directional communication to take place.
</quote>

The first paragraph seems to be discussing the policy as having a 
per-POA effect, whereas the second paragraph implies that it is 
effective on an ORB.

However, it seems counter intuitive to use create_POA to apply an 
ORB-effecting policy. Shouldn't such policies be applied to the ORB via 
the policy manager?

On further investigation, I found that JacORB behaves the same way TAO does, setting a flag in the ORB Core to dictate the use of Bidir GIOP regardless of the POA receiving the policy.

Also, the OMG has a draft replacement to the BiDir GIOP behavior specification, which is available in http://www.omg.org/docs/orbos/01-08-03.pdf. This document is part of the now defunct Firewall traversal specification, but is apparently implemented by some of the ORB vendors.