This is a bug in Resin. Tapestry uses the thread context class loader, which should be a descendent of the default class loader. Whenever someone gets really wierd behavior with Tapestry, my first question is: "Are you using Resin?".
On 5/8/05, Pete Bevin <[EMAIL PROTECTED]> wrote: > Hi, > > I have been trying to get the hangman1 example from Tapestry In Action > to run under Resin 3.0.13. It works fine on Linux, but on Windows I > get the following exception: > > --------------------------------------------- > 500 Servlet Exception > javassist.NotFoundException: java.lang.Object > at javassist.ClassPoolTail.openClassfile(ClassPoolTail.java:294) > at javassist.ClassPoolTail.checkClassName(ClassPoolTail.java:177) > at javassist.ClassPool.checkClassName(ClassPool.java:679) > at javassist.ClassPool.get0(ClassPool.java:542) > at javassist.ClassPool.get(ClassPool.java:531) > at > org.apache.tapestry.enhance.javassist.ClassMapping.loadType(ClassMapping.java:89) > at > org.apache.tapestry.enhance.javassist.ClassMapping.initialize(ClassMapping.java:73) > at > org.apache.tapestry.enhance.javassist.ClassMapping.<init>(ClassMapping.java:48) > at > org.apache.tapestry.enhance.javassist.EnhancedClassFactory.reset(EnhancedClassFactory.java:70) > at > org.apache.tapestry.enhance.javassist.EnhancedClassFactory.<init>(EnhancedClassFactory.java:49) > at > org.apache.tapestry.enhance.DefaultComponentClassEnhancer.createEnhancedClassFactory(DefaultComponentClassEnhancer.java:72) > at > org.apache.tapestry.enhance.DefaultComponentClassEnhancer.<init>(DefaultComponentClassEnhancer.java:66) > at > org.apache.tapestry.engine.AbstractEngine.createComponentClassEnhancer(AbstractEngine.java:2207) > at > org.apache.tapestry.engine.AbstractEngine.setupForRequest(AbstractEngine.java:1262) > at > org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:824) > at > org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:197) > at > org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:158) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:113) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:90) > at > com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:99) > at > com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:163) > at > com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:208) > at > com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:259) > at com.caucho.server.port.TcpConnection.run(TcpConnection.java:341) > at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:490) > at com.caucho.util.ThreadPool.run(ThreadPool.java:423) > at java.lang.Thread.run(Thread.java:595) > > Resin-3.0.13 (built Fri, 06 May 2005 10:06:25 PDT) > --------------------------------------------- > > I'd like to blame Resin, but after a bit of digging, I found a > strangeness in the way Tapestry sets up the class pool for Javassist, > which led to the attached patch. I don't know whether this is the > Right Thing, but it fixes the problem on Resin/Windows and still works > on Resin/Linux. > > Is there a reason why Tapestry doesn't use the default class pool? > > Pete. > > --- > Tapestry-3.0.3/framework/src/org/apache/tapestry/enhance/javassist/EnhancedClassFactory.java > 2005-03-28 21:28:27.000000000 -0500 > +++ > Tapestry-3.0.3-resin/framework/src/org/apache/tapestry/enhance/javassist/EnhancedClassFactory.java > 2005-05-08 13:30:19.000000000 -0400 > @@ -54,7 +54,7 @@ > ClassLoader loader = _resourceResolver.getClassLoader(); > > // create a new ClassPool and make sure it uses the > application resource resolver > - ClassPool classPool = new ClassPool(null); > + ClassPool classPool = ClassPool.getDefault(); > classPool.insertClassPath(new LoaderClassPath(loader)); > > return classPool; > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Howard M. Lewis Ship Independent J2EE / Open-Source Java Consultant Creator, Jakarta Tapestry Creator, Jakarta HiveMind Professional Tapestry training, mentoring, support and project work. http://howardlewisship.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
