[ http://issues.apache.org/jira/browse/GERONIMO-1145?page=all ]
Rick McGuire updated GERONIMO-1145:
-----------------------------------
Attachment: orb.patch
There are other probems/issues involved with the ORB uses, but it turns out to
be fairly simple to ensure that lookup("java:comp/ORB") returns the ORB
associated with the servant's POA instance rather than mapping this value to a
single, global server value.
> Too many ORBs (or possibly not enough)
> --------------------------------------
>
> Key: GERONIMO-1145
> URL: http://issues.apache.org/jira/browse/GERONIMO-1145
> Project: Geronimo
> Type: Bug
> Components: OpenEJB
> Versions: 1.0-M5
> Environment: All
> Reporter: Rick McGuire
> Attachments: orb.patch
>
> This is sort of complicated problem to describe, but there is a problem with
> the wrong ORB getting used with remote references passed in with a request.
> In the current architecture, when a CORBA bean is started, it calls
> Util.setORB() to register itself as the server ORB. Util.setORB() ignores
> all registration calls after the first. so the first CORBABean started in the
> server will determine the ORB instance returned by all
> context.lookup("java:comp/ORB") calls in the server. This value is set in
> StandardServant using:
> // create ReadOnlyContext
> Map componentContext = new HashMap(2);
> componentContext.put("ORB", Util.getORB());
> componentContext.put("HandleDelegate", new CORBAHandleDelegate());
> try {
> enc = new SimpleReadOnlyContext(componentContext);
> } catch (NamingException e) {
> throw new RuntimeException(e);
> }
> which uses the ORB object returned from Util.getORB(). This ORB value is
> used for a lot during request processing, particularly when accessing
> information from remote references passed to this EBJ. If there are multiple
> CORBA beans configured for the server, this can create connection problems
> when the beans are configured with different TSSConfigs. In the case we ran
> into, an ORB instance configured for non-secure transports was trying to
> (correctly) use an SSL connection to perform an operation. The connection
> failed in this case because the ORB did not have the correct transport-level
> security configuration needed to make the connection.
> The appropriate solution would be for the StandardServant to set up the
> comp/ORB value to be the ORB associated with the owning POA instance (created
> in the TSSBean).
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira