Switching to the JBoss classloader also makes auto-loading of html templates work for me.
Have you tried the html auto-loading after making the classloader change? cheers Ben > -----Original Message----- > From: Geoff Callender [mailto:[EMAIL PROTECTED] > Sent: Monday, 1 October 2007 6:52 AM > To: Tapestry users > Subject: Re: T5: the scanner and JBoss > > Nice one, Ben. For auto-reloading class files that works > beautifully, and it avoids the class-loading problems that I found > Tapestry5DevClassLoader introduced. > > Does anyone know how to auto-reload T5 html templates in JBoss??? > > Alternatively, can someone point me to T5.0.5's template > scanning class? > > Thanks in advance, > Geoff > > On 30/09/2007, at 10:01 PM, Ben Sommerville wrote: > > > I found that using the JBoss UnifiedClassLoader instead of > the Tomcat > > class loader for web applications fixes the auto-reloading issues. > > > > To change this setting you need to edit the following file: > > JBoss 4.0.x > > <server dir>/deploy/jbossweb-tomcat55.sar/META-INF/jboss-service.xml > > JBoss 4.2.x > > <server dir>/deploy/jbossweb.deployer/META-INF/jboss-service.xml > > > > Search for the attribute "UseJBossWebLoader" and set it to true. > > > > Note: Changing this may affect how your web-app resolves classes. > > I think the Tomcat classloader always loads classes for the webapp > > libs first, even if the class exists in a parent classloader. > > The JBoss classloader says it follows standard behaviour > and will use > > classes from the parent classloader over classes from the webapp. > > > > cheers > > Ben > > > >> -----Original Message----- > >> From: Geoff Callender [mailto:[EMAIL PROTECTED] > >> Sent: Sunday, 30 September 2007 12:07 AM > >> To: Tapestry users > >> Subject: Re: T5: the scanner and JBoss > >> > >> Nick, thanks for pointing out the earlier e-mail. > >> > >> Unfortunately, it doesn't deal with how to auto-reload html > >> templates. Tapestry5DevClassLoader only ensures class files > >> are reloaded. > >> > >> Any other suggestions? > >> > >> On 28/09/2007, at 9:24 PM, Nick Westgate wrote: > >> > >>> Geoff Callender wrote: > >>>> T5 isn't picking up changes to templates and component > >> classes in my > >>>> environment. T5.0.5 is a jar in an exploded WAR in an > >> exploded EAR, > >>>> which JBoss has been told to use (it's pointed to in > >>>> jboss-service.xml). When I make changes to the web app they are > >>> copied > >>>> immediately to the exploded ear but T5 just isn't > picking them up. > >>>> > >>>> I saw on Howard's blog that he'd had a problem with > >> JBoss/Tomcat... > >>>> > >>>> http://tapestryjava.blogspot.com/2007/02/fighting-with- > >>> tomcat.html > >>>> http://issues.apache.org/bugzilla/show_bug.cgi?id=41664 > >>>> > >>>> ...but the 5.0.5 source looks like it has the necessary fix. > >>> Besides, > >>>> I'm using an ear that's already exploded so I shouldn't > >> be getting > >>>> Howard's problem. True? > >>>> > >>>> Does anyone have a theory on why it isn't working? > >>>> Alternatively can anyone point me to the scanner class so I can > >>> debug > >>>> what it isn't doing? > >>>> > >>>> Geoff > >>> > >>> > >>> The problem with Tomcat was identified in the following email as a > >>> classloader caching issue. I've not tested this though. > >>> > >>> Cheers, > >>> Nick. > >>> > >>> > >>> > >>> -------- Original Message -------- > >>> Subject: RE: T5 developing with WTP and TOMCAT > >>> Date: Wed, 5 Sep 2007 17:59:14 +0200 > >>> From: Brysbaert Gregory <[EMAIL PROTECTED]> > >>> Reply-To: Tapestry users <users@tapestry.apache.org> > >>> To: Tapestry users <users@tapestry.apache.org> > >>> > >>> Hello, > >>> > >>> About this topic, I tried some investigations on my side, > >> and I found > >>> out that the reason why classes don't auto-reload is that the > >>> WebappClassLoader of tomcat 5 (I currently use tomcat 5.0, > >> but I guess > >>> it's the same on Tomcat 5.5) keeps in cache (in a Hashtable more > >>> precisely) all classes it already loaded once. And this > >> cache is never > >>> cleared, except when the WebappClassLoader is stopped. > So, when the > >>> class file is modified on the disk, tapestry 5 clears its > >> own cache, > >>> and then asks to the parent classloader (WebAppClassLoader) > >> to reload > >>> the class, which then serves the previous version of the > class from > >>> its cache. The result is that the class is never actually updated > >>> until the next restart of tomcat. > >>> > >>> > >>> So, as a temporary solution, I tried to develop a class extending > >>> WebappClassLoader that does not cache classes for packages > >> containing > >>> ".pages." and ".components.". The source of this class is : > >>> > >>> > >>> public class Tapestry5DevClassLoader extends WebappClassLoader{ > >>> > >>> private static String[] noCacheElements={".pages.","/ > >>> pages/",".components.","/components/"}; > >>> > >>> public Tapestry5DevClassLoader() { > >>> super(); > >>> > >>> } > >>> > >>> public Tapestry5DevClassLoader(ClassLoader arg0) { > >>> super(arg0); > >>> > >>> } > >>> > >>> > >>> > >>> @Override > >>> protected InputStream findLoadedResource(String arg0) { > >>> InputStream is=super.findLoadedResource(arg0); > >>> if (is!=null){ > >>> if (isNoCacheElement(arg0)) > >>> return null; > >>> } > >>> return is; > >>> } > >>> > >>> private boolean isNoCacheElement(String name){ > >>> > >>> for (int i=0;i<noCacheElements.length;i++){ > >>> if (name.indexOf(noCacheElements[i])>=0) > >>> return true; > >>> } > >>> > >>> return false; > >>> > >>> } > >>> > >>> > >>> > >>> } > >>> > >>> > >>> > >>> > >>> To make it work, you have to do 2 things : > >>> - Compile the class and add it to the server/classes (or > >> server/lib if > >>> you package it in a jar) directory of your tomcat installation > >>> directory. > >>> - in your server.xml file, modify the context declaration > >> and disable > >>> tomcat's auto-reloading functionality, and declare the > >> newly created > >>> classloader instead of the default one : > >>> > >>> > >>> <Context docBase="testtapestry5" path="/testtapestry5" > >>> reloadable="false" > >> source="org.eclipse.jst.j2ee.server:testtapestry5"> > >>> <Loader > >>> > >> > loaderClass="net.atos.mm.fwk.tapestry5.classloader.Tapestry5DevClassL > >> o > >>> ader"> > >>> > >>> </Loader> > >>> </Context> > >>> > >>> This is of course a temporary solution, but I tried it > and it works > >>> for me. > >>> > >>> Waiting for something better, I hope it can help. > >>> > >>> Gregory Brysbaert > >>> > >>> -----Message d'origine----- > >>> De : Thiago H de Paula Figueiredo > >> [mailto:[EMAIL PROTECTED] Envoye : > >>> jeudi 16 aout 2007 18:59 A : Tapestry users Objet : Re: T5 > >> developing > >>> with WTP and TOMCAT > >>> > >>> On Thu, 16 Aug 2007 12:54:31 -0300, Denny > >> <[EMAIL PROTECTED]> wrote: > >>> > >>>> Ok, now, I am using jettylauncher eclipse plugin to develop T5. I > >>> hope T5 > >>>> can fix the problem about working with tomcat. There are > >> many people > >>>> using tomcat for develop and product. > >>> > >>> It's a Tomcat issue, not a Tapestry one. Howard explains > >> the problem > >>> here: > >>> http://tapestryjava.blogspot.com/2007/02/fighting-with-tomcat.html > >>> > >>> -- > >>> Thiago H. de Paula Figueiredo > >>> Desenvolvedor, Instrutor e Consultor de Tecnologia Eteg > >> Tecnologia da > >>> Informacao Ltda. > >>> http://www.eteg.com.br > >>> > >>> > >> > --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: [EMAIL PROTECTED] > >>> For additional commands, e-mail: [EMAIL PROTECTED] > >>> > >>> > >>> > >> > --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: [EMAIL PROTECTED] > >>> For additional commands, e-mail: [EMAIL PROTECTED] > >>> > >> > >> > >> > --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> For additional commands, e-mail: [EMAIL PROTECTED] > >> > >> > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]