You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by Ceki Gülcü <ce...@qos.ch> on 2002/04/16 22:54:26 UTC

log4j 1.2rc1 now available

Hi everyone,

In addition to many performance improvements, bug fixes, and other
small enhancements, log4j 1.2 adds JMX support, Mapped Diagnostic
Contexts, JDBC logging, graphical log viewer (chainsaw), and buffered
IO capability. One important change is the replacement of the Category
class with Logger class and the Priority class with the Level class in
order to facilitate migration from the JDK 1.4 logging API to log4j.

Version 1.2 is the 22nd major public release of log4j. All changes
except the removal of deprecated methods are backward compatible such
that log4j 1.2 can be considered a drop in replacement for log4j
1.1.3.  The only exception is the renaming of the CategoryFactory
class to LoggerFactory class such that subclasses of Category class to
be modified and recompiled. By the way, we strongly discourage casual
users from subclassing the Category or Logger classes.

The history file reads:

  - Version 1.2

  (rc1)

   - The ANT build script was modified to use jar files specified in
     the build.properties file instead of the CLASSPATH environment
     variable. The build.properties file depends on local paths and is
     supplied by the user. The build.properties.sample file is included
     in the distribution. The build.sh and build.bat scripts have
     been removed. This is the way many other jakarta projects build their
     projects. The jar files in the dist/lib directory were also removed
     since they are no longer used. [*]

  - The DOMConfigurator now interprets the string after the '#'
    character in the value attribute within the <level> element as
    the fully qualified class name of a custom Level. This is consistent
    with the way log4j handles "level" values in other places. The
    class attribute is still honored. [*]

  - Added Oliver Burn's chainsaw tool to the core log4j
    distribution. Visualisation and dynamic filtering of log events is
    bound to be a very important area of activity in the future. [*]

  - Added the org.apache.log4j.jdbc.JDBCAppender which as the name
    indicates sends events to a database using the JDBC API. Thanks to
    Kevin Steppe for supplying the code. [*]

  - Added SocketHubAppender class as contributed by Mark Womack. This
    appender sends LoggingEvent objects to a set of remote a log
    servers. [*]

  - In the Category class, the getChainedPriority method has been
    replaced with getEffectiveLevel method. [*]

  (beta4)

   - Replaced the custom class loading based on the thread context class
     loader with a simple Class.forName() call. This solves two allied
     but distinct problems encountered when using Ant with JUnit
     although the bug is more general. In one instance of the
     problem, log4j would throw java.lang.NoClassDefFoundError for
     org/apache/log4j/AppenderSkeleton where log4j.jar and related
     classes were clearly available to the Ant classloader. In another
     incarnation, log4j would reject a custom appender claiming that it is
     not assignable to a org.apache.log4j.Appender variable. This would
     occur when log4j.jar was available to both the Ant classloader and the
     system classloader.

     Thanks to Dave Herman for providing detailed scenarios exposing
     the issues involved. See
       http://forum.java.sun.com/thread.jsp?forum=38&thread=70946
       http://forum.java.sun.com/thread.jsp?forum=38&thread=70946#479697
       http://marc.theaimsgroup.com/?l=ant-user&m=101139178705895&w=2
     for more details. [*]


  (beta3)

  - Fixed the complaints the compiler issued when using the
    Logger.setLevel() methd. [*]

  - Incorporated the performance enhancements to ISO8601DateFormat and
    AbsoluteTimeDateFormat classes submitted by Andrew Vajoczki.

  (beta2)

  - Source code written for log4j 1.1.3.jar will compile fine with
    log4j 1.2X. However, code compiled for log4j 1.1.3 would previously
    systematically throw "java.lang.NoSuchMethodError" runtime exceptions
    when run with log4j 1.2 - prior to beta2. This problem has been
    corrected in beta2. Pheew, that was a close one. [*]

  - Log4j 1.2 is now backward compatible in serialization of
    LoggingEvents. For example, a 1.1.3 SocketAppedner can write to 1.2
    SocketServer. Similarly a 1.2 JMSAppender will work with 1.1.3
    JMSSink. This should ease the move to log4j 1.2, especially in
    large deployments. [*]

  (alpha7)

  - The src/java/org/apache/log4j/examples/ directory moved under the
    top-level directory as examples/. [*]

  - Fixed the ArrayIndexOutOfBoundsException that was thrown by
    AsyncAppender if multiple threads were trying to log an event
    containing an exception near simultaneously. Thanks to Thomas Tuft Muller
    for reporting this bug. [*]

  (alpha1-alpha6)

  - Improved error reporting in DOMConfigurator. Thanks to Thomas Tuft
    Muller for contributing the enhancement. [*]

  - Log4j is now configurable using JMX. JMX support is not of
    production quality. [*]

  - Added support for different encodings in WriterAppender. Thanks to
    Ben Sandee for submitting the relevant patch. [*]

  - Modified SMTPAppender to allow multiple email sessions. Thanks to
    Jon Skeet for supplying the relevant patch. [*]

  - The CategoryFactory class has been replaced by the LoggerFactory
    class. The makeNewCategoryInstance method has been renamed as
    makeNewLoggerInstance. This change requires subclasses of Category
    classes to be modified and recompiled. [**]

  - The Level class replaced the Priority class. Priority class now
    extends Level to preserve backward compatibility. [*]

  - The Logger class replaced the Category class. Logger class
    extends Category to preserve backward compatibility. We proudly
    mark this change with a single star for 100% compatibility. [*]

  - The Category.assert method has been replaced by
    Category.assertLog.  This change was necessary because assert is a
    language reserved word in JDK 1.4. [*/**]

  - Removed deprecated methods setOptions and getOptionStrings defined
    in the org.apache.log4j.spi.OptionHandler interface. This interface
    is implemented by most log4j appenders and layouts. In particular,
    all appenders and layouts shipped with log4j contain these
    deprecated methods. They have become totally redundant after we
    moved to JavaBeans style configuration in log4j 1.1. [**]

  - The disable(Level) methods in Hierarchy have been removed and been
    replaced by threshold methods. [**]

  - Added buffered IO capability to FileAppender and subclasses. [*]

  - The location information (or stack information) was not correctly
    transmitted by JMSAppender. [*]

  - Added event reporting capability to the Hierarchy class.

  - Added new system property "log4j.configuratorClass". This property
    allows the user to specify the custom configurator at the default
    initialization phase. This property replaces the previous
    interpretation of the reference part of "log4j.configuration"
    as the custom configurator class. This interpretation was sometimes
    erroneous and caused headaches. [*]

  - Introduced the Mapped Diagnostic Context or MDC class. This class
    is similar to the NDC except that the diagnostic context is based
    on a map instead of a stack. Moreover the MDC is automatically
    inherited by child threads under JDK 1.2 and above. [*]

  - Corrected a performance bug in the NDC class as observed by Dan
    Milstein and independently by Ray Millard. [*]

  - Removed deprecated methods disable(Priority), disableAll,
    disableDebug, disableInfo and enableAll in BasicConfigurator. [*]

  - Added supports java.io.Reader objects in the method doConfigure(),
    instead of only InputStream. Thanks to Mark Womack for submitting
    the relevant patch. [*]

  - Corrected the restart bug in DayliRollingFileAppender. Thanks to
    Jim Moore for supplying the relevant patch. [*]


--
Ceki


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


RE: log4j 1.2rc1 now available

Posted by Thomas Tuft Muller <tt...@online.no>.
Ceki,

That makes perfect sense. Sorry for not perusing the code before annoying
this group.

--

Thomas



| -----Original Message-----
| From: Ceki Gulcu [mailto:ceki@qos.ch]
| Sent: 17 April 2002 16:15
| To: Log4J Users List
| Subject: RE: log4j 1.2rc1 now available
|
|
|
| Hi Thomas,
|
| The error handling improvement is done through the SAXErrorHandler
|
| At the beginning of the doConfigure(InputSource, LoggerRepository) method
| you should see the lines
|
|        DocumentBuilder docBuilder = dbf.newDocumentBuilder();
|        docBuilder.setErrorHandler(new SAXErrorHandler());
|
| I think that is better than simply catching the exception.
| Does that make any sense? Regards, Ceki
|
| At 10:54 17.04.2002 +0100, you wrote:
| >Ceki,
| >
| >Just downloaded the RC1 distribution, and the improvement I did
| >regarding error reporting in DOMConfigurator is not in the
| >sourcecode, but you still mention my contribution in the history file.
| >
| >More specifically, the sourcecode still reads
| >
| >protected
| >   void doConfigure(InputSource inputSource, LoggerRepository repository)
| >                                           throws
| FactoryConfigurationError {
| ><...>
| >} catch (Exception e) {
| >       // I know this is miserable...
| >       LogLog.error("Could not parse input source
| ["+inputSource+"].", e);
| >}
| >
| >This is my latest suggestion:
| >
| >import org.xml.sax.SAXException;
| >import org.xml.sax.SAXParseException;
| >
| ><..>
| >protected
| >   void doConfigure(InputSource inputSource, LoggerRepository repository)
| >                                           throws
| FactoryConfigurationError {
| ><...>
| >         Document doc = docBuilder.parse(inputSource);
| >       parse(doc.getDocumentElement());
| >     } catch( Exception e ) {
| >                 do {
| >                         if( e instanceof SAXParseException ) {
| >                                 SAXParseException saxEx = (
| > SAXParseException ) e;
| >                                 LogLog.error( "Error parsing
| input in line "
| >                                         + saxEx.getLineNumber()
| >                                         + ", column " +
| > saxEx.getColumnNumber()
| >                                         + ", public ID " +
| > saxEx.getPublicId()
| >                                         + ", system ID " +
| > saxEx.getSystemId()
| >                                         + ", " + saxEx.getMessage() );
| >                         } else {
| >                                 LogLog.error( "Error parsing input: " +
| > e.getMessage(), e );
| >                         }
| >                         e = ( e instanceof SAXException )
| >                                                         ? ( (
| > SAXException ) e ).getException()
| >                                                         : null;
| >                 } while( e != null );
| >         }
| >   }
| >
| >Cheers,
| >
| >--
| >
| >Thomas
|
| --
| Ceki
|
|
| --
| To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>




*************************************************************************
Copyright ERA Technology Ltd. 2002. (www.era.co.uk). All rights reserved. 
The information supplied in this email should be treated in confidence.
No liability whatsoever is accepted for any loss or damage 
suffered as a result of accessing this message or any attachments.

________________________________________________________________________
This email has been scanned for all viruses by the MessageLabs SkyScan
service. For more information on a proactive anti-virus service working
around the clock, around the globe, visit http://www.messagelabs.com
________________________________________________________________________

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


RE: log4j 1.2rc1 now available

Posted by Ceki Gülcü <ce...@qos.ch>.
Hi Thomas,

The error handling improvement is done through the SAXErrorHandler

At the beginning of the doConfigure(InputSource, LoggerRepository) method
you should see the lines

       DocumentBuilder docBuilder = dbf.newDocumentBuilder();
       docBuilder.setErrorHandler(new SAXErrorHandler());

I think that is better than simply catching the exception.
Does that make any sense? Regards, Ceki

At 10:54 17.04.2002 +0100, you wrote:
>Ceki,
>
>Just downloaded the RC1 distribution, and the improvement I did
>regarding error reporting in DOMConfigurator is not in the
>sourcecode, but you still mention my contribution in the history file.
>
>More specifically, the sourcecode still reads
>
>protected
>   void doConfigure(InputSource inputSource, LoggerRepository repository)
>                                           throws FactoryConfigurationError {
><...>
>} catch (Exception e) {
>       // I know this is miserable...
>       LogLog.error("Could not parse input source ["+inputSource+"].", e);
>}
>
>This is my latest suggestion:
>
>import org.xml.sax.SAXException;
>import org.xml.sax.SAXParseException;
>
><..>
>protected
>   void doConfigure(InputSource inputSource, LoggerRepository repository)
>                                           throws FactoryConfigurationError {
><...>
>         Document doc = docBuilder.parse(inputSource);
>       parse(doc.getDocumentElement());
>     } catch( Exception e ) {
>                 do {
>                         if( e instanceof SAXParseException ) {
>                                 SAXParseException saxEx = ( 
> SAXParseException ) e;
>                                 LogLog.error( "Error parsing input in line "
>                                         + saxEx.getLineNumber()
>                                         + ", column " + 
> saxEx.getColumnNumber()
>                                         + ", public ID " + 
> saxEx.getPublicId()
>                                         + ", system ID " + 
> saxEx.getSystemId()
>                                         + ", " + saxEx.getMessage() );
>                         } else {
>                                 LogLog.error( "Error parsing input: " + 
> e.getMessage(), e );
>                         }
>                         e = ( e instanceof SAXException )
>                                                         ? ( ( 
> SAXException ) e ).getException()
>                                                         : null;
>                 } while( e != null );
>         }
>   }
>
>Cheers,
>
>--
>
>Thomas

--
Ceki


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: log4j's errors

Posted by Scott Farquhar <sc...@atlassian.com>.
Marta,

The log4j developers list is for developers only.  Please do not cross 
post messages.

You can find a list of these Error messages by searching the source for 
them.  I believe they are LogLog.log() and LogLog.error().

Cheers,
Scott

Marta Maldonado wrote:
> Hi!!
> 
> Where can I find a list of log4j's possible errors? For example, now I have the
> error: "log4j:ERROR Error occured while converting date." (and others). Where can
> I find this information?
> 
> Thanks!
> 
> Marta.
> 
> 
> 
> ------------------------------------------------------------------------
> 
> --
> To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>


-- 
Scott Farquhar :: scott@atlassian.com

Atlassian :: http://www.atlassian.com
      Supporting YOUR J2EE World



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


log4j's errors

Posted by Marta Maldonado <Ma...@ntsig1.uab.es>.
Hi!!

Where can I find a list of log4j's possible errors? For example, now I have the
error: "log4j:ERROR Error occured while converting date." (and others). Where can
I find this information?

Thanks!

Marta.


log4j's errors

Posted by Marta Maldonado <Ma...@ntsig1.uab.es>.
Hi!!

Where can I find a list of log4j's possible errors? For example, now I have the
error: "log4j:ERROR Error occured while converting date." (and others). Where can
I find this information?

Thanks!

Marta.


RE: log4j 1.2rc1 now available

Posted by Thomas Tuft Muller <tt...@online.no>.
Ceki,

Just downloaded the RC1 distribution, and the improvement I did
regarding error reporting in DOMConfigurator is not in the
sourcecode, but you still mention my contribution in the history file.

More specifically, the sourcecode still reads

protected
  void doConfigure(InputSource inputSource, LoggerRepository repository)
                                          throws FactoryConfigurationError {
<...>
} catch (Exception e) {
      // I know this is miserable...
      LogLog.error("Could not parse input source ["+inputSource+"].", e);
}

This is my latest suggestion:

import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

<..>
protected
  void doConfigure(InputSource inputSource, LoggerRepository repository)
                                          throws FactoryConfigurationError {
<...>
	Document doc = docBuilder.parse(inputSource);
      parse(doc.getDocumentElement());
    } catch( Exception e ) {
		do {
			if( e instanceof SAXParseException ) {
				SAXParseException saxEx = ( SAXParseException ) e;
				LogLog.error( "Error parsing input in line "
					+ saxEx.getLineNumber()
					+ ", column " + saxEx.getColumnNumber()
					+ ", public ID " + saxEx.getPublicId()
					+ ", system ID " + saxEx.getSystemId()
					+ ", " + saxEx.getMessage() );
			} else {
				LogLog.error( "Error parsing input: " + e.getMessage(), e );
			}
			e = ( e instanceof SAXException )
							? ( ( SAXException ) e ).getException()
							: null;
		} while( e != null );
	}
  }

Cheers,

--

Thomas




| -----Original Message-----
| From: Ceki Gulcu [mailto:ceki@qos.ch]
| Sent: 16 April 2002 21:54
| To: log4j-user@jakarta.apache.org
| Cc: log4j-dev@jakarta.apache.org; annouce@jakarta.apache.org
| Subject: log4j 1.2rc1 now available
|
|
|
| Hi everyone,
|
| In addition to many performance improvements, bug fixes, and other
| small enhancements, log4j 1.2 adds JMX support, Mapped Diagnostic
| Contexts, JDBC logging, graphical log viewer (chainsaw), and buffered
| IO capability. One important change is the replacement of the Category
| class with Logger class and the Priority class with the Level class in
| order to facilitate migration from the JDK 1.4 logging API to log4j.
|
| Version 1.2 is the 22nd major public release of log4j. All changes
| except the removal of deprecated methods are backward compatible such
| that log4j 1.2 can be considered a drop in replacement for log4j
| 1.1.3.  The only exception is the renaming of the CategoryFactory
| class to LoggerFactory class such that subclasses of Category class to
| be modified and recompiled. By the way, we strongly discourage casual
| users from subclassing the Category or Logger classes.
|
| The history file reads:
|
|   - Version 1.2
|
|   (rc1)
|
|    - The ANT build script was modified to use jar files specified in
|      the build.properties file instead of the CLASSPATH environment
|      variable. The build.properties file depends on local paths and is
|      supplied by the user. The build.properties.sample file is included
|      in the distribution. The build.sh and build.bat scripts have
|      been removed. This is the way many other jakarta projects build their
|      projects. The jar files in the dist/lib directory were also removed
|      since they are no longer used. [*]
|
|   - The DOMConfigurator now interprets the string after the '#'
|     character in the value attribute within the <level> element as
|     the fully qualified class name of a custom Level. This is consistent
|     with the way log4j handles "level" values in other places. The
|     class attribute is still honored. [*]
|
|   - Added Oliver Burn's chainsaw tool to the core log4j
|     distribution. Visualisation and dynamic filtering of log events is
|     bound to be a very important area of activity in the future. [*]
|
|   - Added the org.apache.log4j.jdbc.JDBCAppender which as the name
|     indicates sends events to a database using the JDBC API. Thanks to
|     Kevin Steppe for supplying the code. [*]
|
|   - Added SocketHubAppender class as contributed by Mark Womack. This
|     appender sends LoggingEvent objects to a set of remote a log
|     servers. [*]
|
|   - In the Category class, the getChainedPriority method has been
|     replaced with getEffectiveLevel method. [*]
|
|   (beta4)
|
|    - Replaced the custom class loading based on the thread context class
|      loader with a simple Class.forName() call. This solves two allied
|      but distinct problems encountered when using Ant with JUnit
|      although the bug is more general. In one instance of the
|      problem, log4j would throw java.lang.NoClassDefFoundError for
|      org/apache/log4j/AppenderSkeleton where log4j.jar and related
|      classes were clearly available to the Ant classloader. In another
|      incarnation, log4j would reject a custom appender claiming that it is
|      not assignable to a org.apache.log4j.Appender variable. This would
|      occur when log4j.jar was available to both the Ant
| classloader and the
|      system classloader.
|
|      Thanks to Dave Herman for providing detailed scenarios exposing
|      the issues involved. See
|        http://forum.java.sun.com/thread.jsp?forum=38&thread=70946
|        http://forum.java.sun.com/thread.jsp?forum=38&thread=70946#479697
|        http://marc.theaimsgroup.com/?l=ant-user&m=101139178705895&w=2
|      for more details. [*]
|
|
|   (beta3)
|
|   - Fixed the complaints the compiler issued when using the
|     Logger.setLevel() methd. [*]
|
|   - Incorporated the performance enhancements to ISO8601DateFormat and
|     AbsoluteTimeDateFormat classes submitted by Andrew Vajoczki.
|
|   (beta2)
|
|   - Source code written for log4j 1.1.3.jar will compile fine with
|     log4j 1.2X. However, code compiled for log4j 1.1.3 would previously
|     systematically throw "java.lang.NoSuchMethodError" runtime exceptions
|     when run with log4j 1.2 - prior to beta2. This problem has been
|     corrected in beta2. Pheew, that was a close one. [*]
|
|   - Log4j 1.2 is now backward compatible in serialization of
|     LoggingEvents. For example, a 1.1.3 SocketAppedner can write to 1.2
|     SocketServer. Similarly a 1.2 JMSAppender will work with 1.1.3
|     JMSSink. This should ease the move to log4j 1.2, especially in
|     large deployments. [*]
|
|   (alpha7)
|
|   - The src/java/org/apache/log4j/examples/ directory moved under the
|     top-level directory as examples/. [*]
|
|   - Fixed the ArrayIndexOutOfBoundsException that was thrown by
|     AsyncAppender if multiple threads were trying to log an event
|     containing an exception near simultaneously. Thanks to Thomas
| Tuft Muller
|     for reporting this bug. [*]
|
|   (alpha1-alpha6)
|
|   - Improved error reporting in DOMConfigurator. Thanks to Thomas Tuft
|     Muller for contributing the enhancement. [*]
|
|   - Log4j is now configurable using JMX. JMX support is not of
|     production quality. [*]
|
|   - Added support for different encodings in WriterAppender. Thanks to
|     Ben Sandee for submitting the relevant patch. [*]
|
|   - Modified SMTPAppender to allow multiple email sessions. Thanks to
|     Jon Skeet for supplying the relevant patch. [*]
|
|   - The CategoryFactory class has been replaced by the LoggerFactory
|     class. The makeNewCategoryInstance method has been renamed as
|     makeNewLoggerInstance. This change requires subclasses of Category
|     classes to be modified and recompiled. [**]
|
|   - The Level class replaced the Priority class. Priority class now
|     extends Level to preserve backward compatibility. [*]
|
|   - The Logger class replaced the Category class. Logger class
|     extends Category to preserve backward compatibility. We proudly
|     mark this change with a single star for 100% compatibility. [*]
|
|   - The Category.assert method has been replaced by
|     Category.assertLog.  This change was necessary because assert is a
|     language reserved word in JDK 1.4. [*/**]
|
|   - Removed deprecated methods setOptions and getOptionStrings defined
|     in the org.apache.log4j.spi.OptionHandler interface. This interface
|     is implemented by most log4j appenders and layouts. In particular,
|     all appenders and layouts shipped with log4j contain these
|     deprecated methods. They have become totally redundant after we
|     moved to JavaBeans style configuration in log4j 1.1. [**]
|
|   - The disable(Level) methods in Hierarchy have been removed and been
|     replaced by threshold methods. [**]
|
|   - Added buffered IO capability to FileAppender and subclasses. [*]
|
|   - The location information (or stack information) was not correctly
|     transmitted by JMSAppender. [*]
|
|   - Added event reporting capability to the Hierarchy class.
|
|   - Added new system property "log4j.configuratorClass". This property
|     allows the user to specify the custom configurator at the default
|     initialization phase. This property replaces the previous
|     interpretation of the reference part of "log4j.configuration"
|     as the custom configurator class. This interpretation was sometimes
|     erroneous and caused headaches. [*]
|
|   - Introduced the Mapped Diagnostic Context or MDC class. This class
|     is similar to the NDC except that the diagnostic context is based
|     on a map instead of a stack. Moreover the MDC is automatically
|     inherited by child threads under JDK 1.2 and above. [*]
|
|   - Corrected a performance bug in the NDC class as observed by Dan
|     Milstein and independently by Ray Millard. [*]
|
|   - Removed deprecated methods disable(Priority), disableAll,
|     disableDebug, disableInfo and enableAll in BasicConfigurator. [*]
|
|   - Added supports java.io.Reader objects in the method doConfigure(),
|     instead of only InputStream. Thanks to Mark Womack for submitting
|     the relevant patch. [*]
|
|   - Corrected the restart bug in DayliRollingFileAppender. Thanks to
|     Jim Moore for supplying the relevant patch. [*]
|
|
| --
| Ceki
|
|
| --
| To unsubscribe, e-mail:
| <ma...@jakarta.apache.org>
| For additional commands, e-mail:
| <ma...@jakarta.apache.org>
|
|



*************************************************************************
Copyright ERA Technology Ltd. 2002. (www.era.co.uk). All rights reserved. 
The information supplied in this email should be treated in confidence.
No liability whatsoever is accepted for any loss or damage 
suffered as a result of accessing this message or any attachments.

________________________________________________________________________
This email has been scanned for all viruses by the MessageLabs SkyScan
service. For more information on a proactive anti-virus service working
around the clock, around the globe, visit http://www.messagelabs.com
________________________________________________________________________

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>