I'm trying to use Orion as a client for some CORBA based objects that are
accessible via Visibroker.
The following code works as a standalone client, providing the correct jars
are in the classpath and the appropriate system properties are set, and the
ORB is running on the localhost:
-----------------------------
// Get context
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"com.inprise.j2ee.jndi.CtxFactory");
p.put(Context.URL_PKG_PREFIXES,"com.inprise.j2ee");
Context context = new InitialContext(p);
// Lookup CustomerHome
Object ref = context.lookup("customer");
CustomerHome home =
(CustomerHome) PortableRemoteObject.narrow(ref,CustomerHome.class);
-----------------------------
However, I'm trying to allow servlets/jsps access to the objects from
within Orion. All the appropriate system properties (-Dxx=yy) where set on
the command line when starting orion, the appropriate jars where placed in
orion/lib and the orb was running on localhost.
In a Servlet running in Orion, when the code got as far as creating the new
InitialContext, a NoClassDefFoundError for com.inprise.j2ee.jndi.CtxFactory
was thrown, however, Class.forName("com.inprise.j2ee.jndi.CtxFactory") did
not throw an error.
The problem appeared to be a ClassLoader problem, where InitialContext was
using a different method for loading classes that the servlet was using,
and only seemed to be looking in the base jars in the orion dir. I added
the appropriate jndi/corba/iiop/orb classes to orion/jndi.jar and the code
succesfully managed to lookup the required object. Hurrah!
However, the object returned by context.lookup() is of type
org.omg.CORBA.portable.ObjectImpl which needs to be narrowed to appropriate
type before casting. This always throws a ClassCastException, even though
the ObjectImpl says it is the correct type. I'm stuck!
I've been trying to get round this problem for days now unsuccesfully. I
can access the corba objects as standalone java apps, and from within Sun
Web Server, mod_jserv and jRun with no problem, just not Orion.
Can anyone help, or shed some light on what the problem may be. I suspect
the problem is related to ClassLoader.
Could one of the Orion team explain how the ClassLoader works in the server
please.
Note, in this case Orion is simply being used as a web-server for serving
jsp/servlets. EJB/JTS/etc is not required, and the JNDI service is replaced
by that that Visibroker supplies.
Thanks in advance
-Joe Walnes