Monday, August 20, 2007

What have they done with com/sun/corba/se/connection/ORBSocketFactory?

We are using Weblogic 8.1.4 and I am writing a monitoring program that will let me know if all the required EJBs, data sources and other resources are up. My current project is a enterprise level system with hooks into lots of things. It can take some to to determine which resource is causing the problem. I was using the weblogic.jar but it is way too big. replacing it with wlclient.jar results in:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/corba/se/connection/ORBSocketFactory
 at java.lang.ClassLoader.defineClass1(Native Method)
 at java.lang.ClassLoader.defineClass(
 at Method)
 at java.lang.ClassLoader.loadClass(
 at sun.misc.Launcher$AppClassLoader.loadClass(
 at java.lang.ClassLoader.loadClass(
 at java.lang.ClassLoader.loadClassInternal(
 at java.lang.Class.forName0(Native Method)
 at java.lang.Class.forName(
 at weblogic.corba.j2ee.naming.ORBHelper.(
 at weblogic.corba.client.ClientORBInitializer.initialize(
 at weblogic.jndi.WLInitialContextFactory.(
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(
 at java.lang.reflect.Constructor.newInstance(
 at java.lang.Class.newInstance0(
 at java.lang.Class.newInstance(
 at javax.naming.spi.NamingManager.getInitialContext(
 at javax.naming.InitialContext.getDefaultInitCtx(
 at javax.naming.InitialContext.init(
 at javax.naming.InitialContext.(
 at org.springframework.jndi.JndiTemplate.createInitialContext(
 at org.springframework.jndi.JndiTemplate.execute(
 at org.springframework.jndi.JndiTemplate.lookup(
 at com.ihc.phc.monitor.JndiMonitor.getStatus(
 at com.ihc.phc.monitor.Monitor.getAllStatus(
 at com.ihc.phc.monitor.Main.main(
Oh how pleasant. This error has been report as bug 6340079 which states: Reason for compilation errors: ------------------------------
The following packages are not there on jdk1.5.0 but they are in j2sdk1.4.2**
How was this problem resolved? Remove the offending unit test of course. There is also another thread on the subject stating basically the same thing but without helpful suggestions. The only helpful suggestion seems to have been to try the wlclient jar from a newer version of the WebLogic server (9 or 10). I tried that and now the ClassDefNotFoundError goes away. Now there is a runtime error:
              [java.rmi.MarshalException: CORBA MARSHAL 0 Maybe; nested exception is: 
 org.omg.CORBA.MARSHAL:   vmcid: 0x0  minor code: 0 completed: Maybe]
You know, indecision is bad enough in humans, I do not need it in computers. Maybe it worked? Slight chance I would say. Ok, looks like the newer (9.1) wlclient.jar is not compatible with older (8.1) weblogic instances. Funny thing is, the weblogic.jar with all its bloat works. I wonder ..... Looks like the weblogic.jar has it's own version of the ORBSocketFactory and that is does not use the sun one. Oh bother! Guess it is back to the bloated weblogic.jar for me.


Matt said...

Glad I posted this as I just ran into it again.

Subha said...

Thanks a ton.. This worked

Matthew O. Smith said...

Boy am I really glad I posted this as I ran into it again.

Anonymous said...

Muchas Gracias por este post, me sirvio para resolver un problema.