Yes +1 for 1.0.4.  Thanks for explaining all of this.

On 2/21/06, Manfred Geiler <[EMAIL PROTECTED]> wrote:
> +1 for dependency on commons-logging 1.0.4
>
> BTW, Stan (Silvert), how do you solve these logging issues in JBoss?
> AFAIK, JBoss has only one central log4j configuration. However, is
> there a way to config logging per eapp or webapp? If yes, how does
> JBoss address those issues with shared classes?
>
> Thanks,
> Manfred
>
>
>
> On 2/21/06, Simon Kitching <[EMAIL PROTECTED]> wrote:
> > On Mon, 2006-02-20 at 21:47 -0800, Craig McClanahan wrote:
> > > No, I was not aware of that change ... but does it actually work?
> > > Declaring something Serializable is not by itself sufficient if there
> > > are transient variables inside the implementation.  (On a separate
> > > thread on commons-dev, I recommended that there be unit tests to
> > > validate this behavior:  use a Log instance, serialize it, deserialize
> > > it, and use it some more).
> >
> > I believe Serializable is correctly implemented for all standard
> > adapters except possibly AvalonLog [will follow that up on commons-dev].
> > The deserialized objects correctly locate a fresh "underlying" log
> > object to forward calls to.
> >
> > Yes there need to be unit tests for this; I'll look for them and add
> > some if not already present.
> >
> > >
> > >
> > >         The 1.0.4 release occurred around June 2004 so perhaps there
> > >         are a few
> > >         containers out there capable of running MyFaces but which are
> > >         still on
> > >         JCL 1.0.3. In addition there might be a few custom Log
> > >         adapters around
> > >         which *might* not implement Serializable.
> > >
> > >         However in view of the complicated/ugly workaround for
> > >         non-serializable
> > >         Log implementations, it seems ok to me for MyFaces to just
> > >         declare a
> > >         dependency on JCL 1.0.4. If people don't comply then there is
> > >         a very
> > >         obvious "NotSerializableException: logAdapterClassName"
> > >         message
> > >         generated. The fix is then to upgrade to 1.0.4 (which is
> > >         binary
> > >         compatible with earlier releases) or a later release.
> > >
> > >         Comments/Opinions?
> > >
> > > +1 on declaring a dependency on Commons Logging 1.0.4 ... anything
> > > prior to that is just asking for trouble.  I use 1.0.4 exclusively for
> > > eveything that has a C-L dependency ... works fine, lasts a long
> > > time :-).
> >
> > So the conclusion seems to be that if/when using commons-logging in
> > MyFaces, use:
> >   private Log foo = LogFactory.getLog("foo");
> > everywhere except in short-lived and frequently-created objects. In
> > those cases, either call LogFactory.getLog as needed or have some
> > longer-lived object store the Log object.
> >
> > For StateHolder classes, things "just work"; the logger isn't saved in
> > saveState; it gets recreated in the new component and that works.
> >
> > For Serializable classes, the Log object handles its own serialization
> > correctly. No need for "transient", no need for any other special hacks.
> >
> > MyFaces does need to declare a dependency on commons-logging 1.0.4 (not
> > earlier versions) in order for things to work this simply. Release 1.0.4
> > was in June 2004.
> >
> > Do NOT use "static Log" anywhere.
> >
> > Is this all ok?
> >
> > Cheers,
> >
> > Simon
> >
> >
>

Reply via email to