If you were to put the above code into a superclass, doesn't that go against the previously discussed advice of having the log instance belong to each class?
Thanks, Eric
-------- Original Message ------ Subject: Re: Serializable Logging implementation From: Tim Funk <[EMAIL PROTECTED]> Date: Wed, 15 Sep 2004 09:20:06 -0400
To: Tomcat Users List <[EMAIL PROTECTED]>
Your NPE comes from the transient value not being restored from de-serialization.
Your best chance at this point without a lot of code changes is to 1) Make your log variable transient 2) Make your base class implement HttpSessionActivationListener. 3) Make your implementation of sessionDidActivate():
public void sessionDidActivate(HttpSessionEvent se) { if (log==null) log = LogFactory.getLog(this.getClass()); }
public void sessionWillPassivate (HttpSessionEvent se) { ; /* Nothing to do */ }
-Tim
Antony Paul wrote:
Then it throws NullPointerException
rgds Antony Paul
----- Original Message ----- From: "Shapira, Yoav" <[EMAIL PROTECTED]> To: "Tomcat Users List" <[EMAIL PROTECTED]> Sent: Wednesday, September 15, 2004 6:05 PM Subject: RE: Serializable Logging implementation
Hi, Hmm, you want to be careful with this pattern. I like the private static one for Loggers -- there are very good reasons it's the recommended pattern (by log4j, by the java.util.logging folks) and the one that's used (by Tomcat and most other serious apps I know of).
If you really want to stick with your "base class gets the logger" pattern, consider marking it as transient.
Yoav Shapira Millennium Research Informatics
-----Original Message----- From: Antony Paul [mailto:[EMAIL PROTECTED] Sent: Wednesday, September 15, 2004 8:27 AM To: Tomcat Users List Subject: Re: Serializable Logging implementation
I extend a base form which gets the Log as LogFactory.getLog(this.getClass()); So that no need to define and get a Log instance in subclass. Is there
any
way so that I can follow this pattern.
rgds Antony Paul
----- Original Message ----- From: "Tim Funk" <[EMAIL PROTECTED]> To: "Tomcat Users List" <[EMAIL PROTECTED]> Sent: Wednesday, September 15, 2004 4:38 PM Subject: Re: Serializable Logging implementation
logging instances should be static to the class.
// Commons logging example but a log4j equiv should be easy to find private static Log log = LogFactory.getLog(MyClass.class);
-Tim
Antony Paul wrote:
Hi, I used Log4J and commons logging in an ActionForm which is
stored
in the
session. When I reload the context it is invalidating the session
because it
is non serializable. Is there any work around for this ?. Or do I
have
to
use any other Logger.