We should probably update the deployment notes for JBoss then.  Perhaps
JBoss has changed recently because I tried a lot of variations before I
found one that worked properly.

On 10/1/07, Ben Sommerville <[EMAIL PROTECTED]> wrote:
>
> 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]
>
>


-- 
Howard M. Lewis Ship
Partner and Senior Architect at Feature50

Creator Apache Tapestry and Apache HiveMind

Reply via email to