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

Reply via email to