Hi , Thanks a zillion for the response.
Nice Research David. Noted few points there. I hacked setclasspath.sh in tomcat and it seemed to work at least for the Resource. ===>Another Error though: ======================================= java.lang.NoClassDefFoundError: org/apache/log4j/Priority at org.openejb.OpenEJB.init(OpenEJB.java:150) at org.openejb.OpenEJB.init(OpenEJB.java:130) at org.openejb.core.ivm.naming.InitContextFactory.initializeOpenEJB(InitContextFactory.java:100) at org.openejb.core.ivm.naming.InitContextFactory.getInitialContext(InitContextFactory.java:71) ======================================= This is the call to the servlet : http://desistar.no-ip.org:8080/examples/servlet/CallEJB This is the code : http://desistar.no-ip.org:8080/examples/callejb.txt Any thoughts. Regards Gopal --- David Blevins <[EMAIL PROTECTED]> wrote: > Hey Guys, > > I'm stepping through the whole process. I also get > the > java.net.MalformedURLException: unknown protocol: > resource > > This is extremely, *extremely*, strange as the > java.protocol.handler.pkgs is definitely set. And > as I write this very > sentence, something occurs to me... > > THIS IS A STUPID CLASSPATH PROBLEM > > Darn it. Ok, let me go check for sure.... Ok, yep, > there it is. If you > happen to have the JDK 1.3.1 source handy, open up > java.net.URL and go > to line 923, you'll see this: > > cls = Class.forName(clsName); > > The java.net.URL class expects all protocol handlers > to be in the system > level classpath, but Tomcat doesn't put anything > there it uses a "child" > classloader that the VM can't see. This explains > another problem > someone was having making an OpenEJB Avalon block, > Avalon also uses > their own classloader to load libraries. > > The question that immediately comes to my mind is > "Why doesn't the same > problem occur when the JVM tries to create the JNDI > InitialContectFactory?" Those are also factory-type > class names > specified as properties that must be loaded by the > JVM and instantiated. > Let me take a look and see why it works there.... > Ok, there it is. So, > very inconsistent! Look at this, this is how they > (Sun) load JNDI > factories: > > ClassLoader cl = > Thread.currentThread().getContextClassLoader(); > return Class.forName(className, true, cl); > > This is in com.sun.naming.internal.VersionHelper12 > in the JNDI source > code -- you have to download the J2EE 1.3 source > code to get that file. > So, here they (Sun) are not using the system > classpath to load the > factory but using whatever classloader the > application may be using. > Obviously this is much smarter. > > So to sum up: > -- When loading URLStreamHandler implementations, > Sun looks for the > class in the system classpath. Tomcat doesn't load > anything in the > system classpath, so the URLStreamHandler can't be > found and you get a > misleading exceptions saying that the protocol is > unknown. > > My second point: > -- IMO, this is a VM bug. Sun should be loading > java.net.URLStreamHandler implementations using the > classloader > associated with the thread. This is exactly what > they do for loading > JNDI InitialContextFactory implementations and (now > that I think of it) > is also what they do in the java.io package for > object serialization. > > Action: > -- I'm definitely going to file a VM bug report. I > know of an easy > workaround for this and will put that in right away. > That will ship > with OpenEJB 0.8.4. Looks like that release might > come out a little > sooner that expected. > > In the meantime, you can either: > 1. Hack Tomcat's setclasspath.sh or > setclasspath.bat to include the > openejb-0.8.3.jar in the classpath. This jar holds > the class Sun > expects to be in the system classpath. > 2. Or use Resin > > > Well, that was interesting. You learn something new > everyday. > > Good night all, > David Blevins > > > > > > -----Original Message----- > > From: [EMAIL PROTECTED] > > [mailto:[EMAIL PROTECTED]] > On Behalf > > Of Gopal Mukkamala > > Sent: Tuesday, October 08, 2002 7:32 PM > > To: [EMAIL PROTECTED] > > Subject: [OpenEJB-user] Tomcat :EJB > > > > > > Root cause: java.net.MalformedURLException: > unknown > > protocol: resource > > > > Since the last attempt I copied all jar files > > on to WEB-INF/lib > > directory that seems to have suppressed all > > Class not found errors. > > > http://desistar.no-ip.org:8080/examples/callejb.txt > > It is basically giving MalformedURL ? > > Any thoughts will be quiet helpful. > > Regards > Gopal > > > > > __________________________________________________ > Do you Yahoo!? > Faith Hill - Exclusive Performances, Videos & More > http://faith.yahoo.com > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > http://OpenEJB.sf.net > OpenEJB-user mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/openejb-user > __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ http://OpenEJB.sf.net OpenEJB-user mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/openejb-user