The release is already delayed. So far we have two compatibility issues that 
need to be fixed. Please create a Jira issue for the Flume Appender and the JVM 
shutdown hook. Lets gets those fixed. And perhaps we should stop doing things 
that aren’t directly focused on getting the release out as they may well 
introduce more problems.

Ralph

> On Sep 29, 2016, at 5:16 AM, Mikael Ståldal <mikael.stal...@magine.com> wrote:
> 
> I think that it is unfortunate that the close timeout is always zero within 
> the standard JVM shutdown hook (LoggerContext.java:275). I think that should 
> be configurable. However, I don't want to delay the release for that, so 
> let's fix that after the 2.7 release. 
> https://issues.apache.org/jira/browse/LOG4J2-1623 
> <https://issues.apache.org/jira/browse/LOG4J2-1623>
> 
> However, I want to make sure that KafkaManager use the previous behavior if 
> the requested timeout is zero. I just made a commit to master with that.
> 
> It seems like FlumePersistentManager.releaseSub (the only other Manager using 
> releaseSub timeout) tries to do something similar:
> final long shutdownWaitMillis = requestedTimeoutMillis < 0 ? 
> SHUTDOWN_WAIT_MILLIS : requestedTimeoutMillis;
> But I thing the logic is wrong here. It should probably use 
> SHUTDOWN_WAIT_MILLIS if requestedTimeoutMillis is <= 0. This should possibly 
> be fixed before the release.
> 
> 
> 
> On Wed, Sep 28, 2016 at 6:54 PM, Gary Gregory <garydgreg...@gmail.com 
> <mailto:garydgreg...@gmail.com>> wrote:
> On Wed, Sep 28, 2016 at 8:51 AM, Mikael Ståldal <mikael.stal...@magine.com 
> <mailto:mikael.stal...@magine.com>> wrote:
> Was this timeout thing implemented as part of any JIRA issue?
> 
> The high level ticket is: https://issues.apache.org/jira/browse/LOG4J2-1539 
> <https://issues.apache.org/jira/browse/LOG4J2-1539>
> 
> Gary
>  
> 
> On Wed, Sep 28, 2016 at 5:49 PM, Mikael Ståldal <mikael.stal...@magine.com 
> <mailto:mikael.stal...@magine.com>> wrote:
> To track this, I temporary added this to KafkaManager.releaseSub():
> LOGGER.info("releaseSub: timeout=" + timeout + " " + timeUnit.toString(), new 
> Throwable());
> and I get:
> 2016-09-28 17:43:14,382 pool-1-thread-1 INFO releaseSub: timeout=0 
> MILLISECONDS java.lang.Throwable
>       at 
> org.apache.logging.log4j.core.appender.mom.kafka.KafkaManager.releaseSub(KafkaManager.java:60)
>       at 
> org.apache.logging.log4j.core.appender.AbstractManager.stop(AbstractManager.java:85)
>       at 
> org.apache.logging.log4j.core.appender.mom.kafka.KafkaAppender.stop(KafkaAppender.java:107)
>       at 
> org.apache.logging.log4j.core.config.AbstractConfiguration.stop(AbstractConfiguration.java:349)
>       at 
> org.apache.logging.log4j.core.LoggerContext.stop(LoggerContext.java:329)
>       at 
> org.apache.logging.log4j.core.AbstractLifeCycle.stop(AbstractLifeCycle.java:127)
>       at 
> org.apache.logging.log4j.core.LoggerContext$1.run(LoggerContext.java:275)
>       at 
> org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry$RegisteredCancellable.run(DefaultShutdownCallbackRegistry.java:104)
>       at 
> org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry.run(DefaultShutdownCallbackRegistry.java:74)
>       at java.lang.Thread.run(Thread.java:745)
> the culprit is AbstractLifeCycle.stop() which uses a default timeout of 0.
> 
> On Wed, Sep 28, 2016 at 5:40 PM, Gary Gregory <garydgreg...@gmail.com 
> <mailto:garydgreg...@gmail.com>> wrote:
> It is used when you call LifeCycle2.stop(long, TimeUnit), like stopping a 
> LoggerContext or all of Log4j through the shutdown() method.
> 
> Gary
> 
> On Wed, Sep 28, 2016 at 8:35 AM, Mikael Ståldal <mikael.stal...@magine.com 
> <mailto:mikael.stal...@magine.com>> wrote:
> I see that KafkaManager.releaseSub() is passed a timeout of 0 at runtime, 
> which is not very useful. How is this actually supposed to be used? How can 
> you make it get something else than 0?
> 
> On Wed, Sep 28, 2016 at 5:33 PM, Mikael Ståldal <mikael.stal...@magine.com 
> <mailto:mikael.stal...@magine.com>> wrote:
> We have already discussed this here: 
> https://issues.apache.org/jira/browse/LOG4J2-1390 
> <https://issues.apache.org/jira/browse/LOG4J2-1390>
> 
> I don't think the release process is the right occasion to reopen this 
> discussion. Can we please keep the Kafka 0.8 compatibility for this release, 
> and then possibly reopen this discussion after the release (and possibly 
> changing it for the 2.8 release)?
> 
> On Wed, Sep 28, 2016 at 5:24 PM, Gary Gregory <garydgreg...@gmail.com 
> <mailto:garydgreg...@gmail.com>> wrote:
> On Wed, Sep 28, 2016 at 8:13 AM, Mikael Ståldal <mikael.stal...@magine.com 
> <mailto:mikael.stal...@magine.com>> wrote:
> Kafka server 0.8 is still in use, and newer Kafka clients cannot connect to 
> older Kafka servers.
> 
> There will always be users of old software. That does not mean that new 
> versions of Log4j must support old software, especially pre-1.0 software.
> 
> Gary
>  
> 
> On Wed, Sep 28, 2016 at 5:10 PM, Gary Gregory <garydgreg...@gmail.com 
> <mailto:garydgreg...@gmail.com>> wrote:
> I do not think it makes sense to support old versions that are not even 1.0.
> 
> Gary
> 
> On Wed, Sep 28, 2016 at 7:42 AM, Mikael Ståldal <mikael.stal...@magine.com 
> <mailto:mikael.stal...@magine.com>> wrote:
> I fixed the Kafka issue and pushed it to master branch.
> 
> However, I have another concern, what timeout value is actually passed in to 
> AbstractManager.releaseSub ?
> 
> On Wed, Sep 28, 2016 at 3:51 PM, Mikael Ståldal <mikael.stal...@magine.com 
> <mailto:mikael.stal...@magine.com>> wrote:
> -1 since the Kafka appender now only works with Kafka client (and thus 
> server) 0.9+, even though we agreed to keep compatibility with 0.8 for the 
> time being:
> 
> https://issues.apache.org/jira/browse/LOG4J2-1390 
> <https://issues.apache.org/jira/browse/LOG4J2-1390>
> 
> The problem appeared with commit 170469514b374eb5a5a33bde6936162fd608f097 by 
> Gary in KafkaManager.java (method releaseSub).
> 
> I get this error with kafka-clients 0.8.2.2 <http://0.8.2.2/>:
> 
> java.lang.NoSuchMethodError: 
> org.apache.kafka.clients.producer.Producer.close(JLjava/util/concurrent/TimeUnit;)V
>       at 
> org.apache.logging.log4j.core.appender.mom.kafka.KafkaManager.releaseSub(KafkaManager.java:61)
>       at 
> org.apache.logging.log4j.core.appender.AbstractManager.stop(AbstractManager.java:85)
>       at 
> org.apache.logging.log4j.core.appender.mom.kafka.KafkaAppender.stop(KafkaAppender.java:107)
>       at 
> org.apache.logging.log4j.core.config.AbstractConfiguration.stop(AbstractConfiguration.java:349)
>       at 
> org.apache.logging.log4j.core.LoggerContext.stop(LoggerContext.java:329)
>       at 
> org.apache.logging.log4j.core.AbstractLifeCycle.stop(AbstractLifeCycle.java:127)
>       at 
> org.apache.logging.log4j.core.LoggerContext$1.run(LoggerContext.java:275)
>       at 
> org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry$RegisteredCancellable.run(DefaultShutdownCallbackRegistry.java:104)
>       at 
> org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry.run(DefaultShutdownCallbackRegistry.java:74)
>       at java.lang.Thread.run(Thread.java:745)
> 
> 
> 
> 
> On Mon, Sep 26, 2016 at 5:50 PM, Ralph Goers <ralph.go...@dslextreme.com 
> <mailto:ralph.go...@dslextreme.com>> wrote:
> This is a vote to release Log4j 2.6.2, the next version of the Log4j 2 
> project.
> 
> Please download, test, and cast your votes on the log4j developers list.
> [] +1, release the artifacts
> [] -1, don't release because...
> 
> The vote will remain open for 72 hours (or more if required). All votes are 
> welcome and we encourage everyone to test the release, but only Logging PMC 
> votes are “officially” counted. As always, at least 3 +1 votes and more 
> positive than negative votes are required.
> Changes in this version include:
> 
> New features:
> o LOG4J2-1578:  RoutingAppender can be configured with scripts. Add Script in 
> a Routes element. 
> o LOG4J2-1597:  Add a ScriptAppenderSelector to create an Appender specified 
> by a Script. 
> o LOG4J2-1349:  (GC) Added support for garbage-free ThreadContext map. 
> Disabled by default, users need to enable this explicitly. 
> o LOG4J2-1447:  (GC) Changed LogEvent's internal data structure for context 
> data to be garbage-free. Added method LogEvent#getContextData(), deprecated 
> method #getContextMap(). 
> o LOG4J2-1010:  Users can now inject context data from other sources than 
> ThreadContext. Values can be any Object, not just Strings. Thanks to Mikael 
> Ståldal. 
> o LOG4J2-1568:  Added support for java.util.concurrent.LinkedTransferQueue to 
> AsyncAppender. 
> o LOG4J2-1430:  Added optional support for Conversant DisruptorBlockingQueue 
> in AsyncAppender. Thanks to John Cairns. 
> o LOG4J2-1439:  Added optional support for JCTools MPSC bounded lock-free 
> queue in AsyncAppender. Thanks to Anthony Maire. 
> o LOG4J2-1558:  SocketAppender now supports IO buffering. 
> o LOG4J2-1557:  Add a Builder for the SocketAppender (deprecates factory 
> method). 
> o LOG4J2-1609:  Add a Builder to ServletAppender and deprecate factory 
> method. 
> o LOG4J2-1553:  AbstractManager now implements AutoCloseable. 
> o LOG4J2-1528:  Added ability to generate Log4j 2-style XML configuration 
> file from ConfigurationBuilder. 
> o LOG4J2-1181:  Added Logging API for Scala 2.10 and 2.11. 
> o LOG4J2-1512:  Added options to exclude stack trace from JSON, XML and YAML 
> layouts. 
> o LOG4J2-1539:  Added Core API Configurator.shutdown(LoggerContext, long, 
> TimeUnit). 
> o LOG4J2-1501:  FileAppender is now able to create files on-demand. 
> o LOG4J2-1504:  RollingFileAppender is now able to create files on-demand. 
> o LOG4J2-1471:  [PatternLayout] Add an ANSI option to %xThrowable. 
> o LOG4J2-1472:  org.apache.logging.log4j.core.LoggerContext now implements 
> Closeable. 
> o LOG4J2-1458:  [PatternLayout] Add an ANSI option to %message. 
> o LOG4J2-1505:  Create a Builder for the FileAppender plugin to facilitate 
> adding attributes in the future. 
> o LOG4J2-1507:  Allow Builders to be completely generic. 
> o LOG4J2-1508:  Allow a Builder to subclass another Builder. 
> o LOG4J2-1516:  Add ThreadContextMap2 interface supporting method 
> putAll(Map<String, String>). Thanks to Gary Gregory. 
> o LOG4J2-1519:  Add ThreadContext.putAll(Map<String, String>). 
> o LOG4J2-1520:  Add JUnit Rule implementations to manage the thread context. 
> o LOG4J2-1547:  The Core AbstractConfiguration now tracks its LoggerContext 
> and add Configuration.getLoggerContext(). 
> o LOG4J2-1540:  The Core AbstractManager now tracks its LoggerContext. 
> o LOG4J2-1577:  Add a Builder to the RoutingAppender and deprecate factory 
> method. 
> 
> Fixed Bugs:
> o LOG4J2-1611:  Improved performance of context data injector for web 
> applications to be on par with standalone applications. 
> o LOG4J2-1591:  Introduced new interface LifeCycle2 with stop(long,TimeUnit) 
> method to avoid breaking backwards compatibility with new 
> Configurator.shutdown(LoggerContext, long, TimeUnit) API. 
> o LOG4J2-1590:  Fixed issue with filters extending AbstractFilter that did 
> not override methods with unrolled varargs. 
> o LOG4J2-1583:  Fixed scrambled log messages triggered by nested logging from 
> toString() method of a logging parameter object. Thanks to Larry West. 
> o LOG4J2-1259:  Log4j threads are no longer leaking on Tomcat shutdown. 
> Thanks to Misagh Moayyed, Steffen Offermann. 
> o LOG4J2-1051:  When starting on Google App Engine, Interpolator now 
> suppresses the NoClassDefFoundError stack trace  for the jvmrunargs lookup. 
> Thanks to Lukasz Lenart. 
> o LOG4J2-1582:  When initializing on platforms where JMX is not available, 
> Interpolator component no longer prints stack trace for warning messages. 
> o LOG4J2-1581:  Unregistering JMX components no longer prints a stack trace 
> when the MBean has already been unregistered. 
> o LOG4J2-1313:  Support Property values to be specified in configuration as a 
> value attribute as well as an element. Thanks to Philipp Knobel, Leon Finker. 
> o LOG4J2-1575:  (GC) LoggerConfig now stores configuration properties in a 
> List, not a Map to prevent creating temporary Iterator objects. Added method 
> LoggerConfig#getPropertyList(), deprecated method #getProperties(). 
> o LOG4J2-1457:  Fixed class loader deadlock when using async logging and 
> extended stack trace pattern. Thanks to Leon Finker. 
> o LOG4J2-1563:  Fix to prevent Log4j 2.6.2 and higher from losing exceptions 
> when a security manager is present. Thanks to Jason Tedor. 
> o LOG4J2-1530:  Fixed issue where LogEvent.getContextStack() returned null. 
> o LOG4J2-1518:  Prevent deadlock in Async Loggers when queue is full and 
> logged Object's toString() logs another message. Thanks to Leon Finker. 
> o LOG4J2-1542:  Prevent ArrayIndexOutOfBoundsException in 
> ParameterizedMessage.formatTo for single-char or empty messages. Thanks to 
> Rogério Lecarião Leite. 
> o LOG4J2-1549:  Fixed issue where 
> AsyncLoggerContextSelector+PropertiesConfigurationBuilder defaulted to 
> includeLocation=true. Thanks to Jason Bedard. 
> o LOG4J2-1562:  Prevent SocketAppender memory usage from growing unbounded if 
> it cannot connect to a server. 
> o LOG4J2-1559:  Prevent NPE in Level.isInRange. Thanks to Andrey Plotkin. 
> o LOG4J2-1511:  DynamicThresholdFilter filtered incorrectly when params were 
> passed as individual arguments instead of varargs. Thanks to Srikanth 
> Surukuntu. 
> o LOG4J2-1548:  [CronTriggeringPolicy] ConfigurationScheduler scheduled the 
> task infinitely after first fire. 
> o LOG4J2-1506:  Log4j should not unregister JMX MBeans when 
> log4j2.disable.jmx property is true. Thanks to Johannes Schleger. 
> o LOG4J2-1490:  Log4j2 should postpone creating log file until the appender 
> actually receives an event. Thanks to Krzysztof Taborski. 
> o LOG4J2-1320:  Support loading custom plugins from jar files and directories 
> whose classpath entries use the "vfs" URL protocol. Thanks to Paresh Varke, 
> Pierrick Hymbert. 
> o LOG4J2-1541:  Fix file handle resource leak in 
> XmlConfiguration.XmlConfiguration(ConfigurationSource). 
> o LOG4J2-1538:  Prevent NPE when dynamically removing filters. Thanks to Igor 
> Karpov. 
> o LOG4J2-1532:  Attributes were not merged properly in composite 
> configurations. 
> o LOG4J2-1529:  Attributes were not merged properly in composite 
> configurations. Thanks to Sridevi Narra. 
> o LOG4J2-1527:  Prevent NPE in RingBufferLogEvent.getFormattedMessage() when 
> used in web applications. Thanks to Jose Leon. 
> o LOG4J2-905:  Added ability to disable (date) lookup completely for 
> compatibility with other libraries like Camel. Thanks to Moritz Löser. 
> o LOG4J2-1526:  Added support for setting StatusLogger destination in 
> ConfigurationBuilder. 
> o LOG4J2-1448:  Allow comma separated agents, host list to be passed to 
> FlumeAppender. Thanks to Keith Laban. 
> o LOG4J2-1500:  Merging configurations failed with an NPE when comparing 
> Nodes with different attributes. Thanks to Jose Leon. 
> o LOG4J2-1482:  Fixed improper header in CsvParameterLayout. Thanks to Sumit 
> Singhal. 
> o LOG4J2-1199:  Documented that JVM Input Arguments Lookup (JMX) is not 
> available on Google App Engine. 
> o LOG4J2-1438:  (GC) Added method getParameter() to ObjectMessage (and 
> ReusableObjectMessage). 
> o LOG4J2-1488:  (GC) Fixed ISO8601 %date conversion pattern with a period '.' 
> separator for milliseconds is now garbage free. Thanks to Richard Zschech. 
> o LOG4J2-1489:  (GC) Fixed %date conversion patterns with a timezone 
> parameter are now garbage free. Thanks to Richard Zschech. 
> o LOG4J2-1279:  Prevent NullPointerException in 
> FastDateParser$TimeZoneStrategy. Thanks to Tony Baines. 
> o LOG4J2-1341:  (GC) HighlightConverter and StyleConverter are now GC-free. 
> Thanks to Richard Zschech. 
> o LOG4J2-1467:  [OSGi] Fixed missing import package. Thanks to Ralf, Gary 
> Gregory. 
> o LOG4J2-351:  [OSGi] Fixed wrong Fragment-Host in manifest files. Thanks to 
> Roland Weiglhofer. 
> o LOG4J2-1313:  Properties declared in configuration can now have their value 
> either in the element body or in an attribute named "value". Thanks to 
> Philipp Knobel. 
> o LOG4J2-1235:  
> org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy was not 
> working correctly. Thanks to Niranjan Rao, Sascha Scholz, Aleksey Zvolinsky. 
> o LOG4J2-1502:  Fixed issue where CsvParameterLayout and CsvLogEventLayout 
> inserted NUL characters if data starts with {, (, [ or " Thanks to Sumit 
> Singhal. 
> o LOG4J2-1573:  Layout is no longer optional. Thanks to Steffen Offermann. 
> o LOG4J2-1608:  ServletAppender does not provide throwable object to 
> ServletContext. 
> o LOG4J2-1599:  Prevent potential NPE in 
> org.apache.logging.log4j.message.ParameterFormatter.formatMessage3(StringBuilder,
>  char[], int, Object[], int, int[]). 
> o LOG4J2-1600:  Prevent potential NPE due to 
> org.apache.logging.log4j.core.layout.MarkerPatternSelector.createSelector(PatternMatch[],
>  String, boolean, boolean, Configuration). 
> o LOG4J2-1601:  Prevent potential NPE due to 
> org.apache.logging.log4j.core.layout.ScriptPatternSelector.createSelector(AbstractScript,
>  PatternMatch[], String, boolean, boolean, Configuration). 
> o LOG4J2-1602:  Prevent potential NPE in 
> org.apache.logging.log4j.core.util.datetime.FormatCache.MultipartKey.equals(Object)
>  when object is null. 
> o LOG4J2-1603:  Redo hashCode() and equals() methods in 
> org.apache.logging.log4j.core.net.ssl classes. 
> o LOG4J2-1610:  Add targetNamespace to log4j-config.xsd. GitHub #43. Thanks 
> to Shubhankar. 
> 
> Changes:
> o LOG4J2-1604:  Log4j2 TcpSocketServer in background. Thanks to Colin 
> Hillman. 
> o LOG4J2-1574:  Allow the RollingFileAppender to use default pattern layout. 
> o LOG4J2-1556:  Custom Log4j threads now extend Log4jThread. 
> o LOG4J2-1605:  Improve error messages for TcpSocketServer and 
> UdpSocketServer. 
> o LOG4J2-1458:  Updated Jackson from 2.7.5 to 2.8.0. 
> o LOG4J2-1494:  Updated Jackson from 2.8.0 to 2.8.1. 
> o LOG4J2-1569:  Updated Jackson from 2.8.1 to 2.8.2. 
> o LOG4J2-1598:  Updated Jackson from 2.8.2 to 2.8.3. 
> o LOG4J2-1495:  Updated LMAX Disruptor from 3.3.4 to 3.3.5. 
> o LOG4J2-1496:  Updated Kafka client from 0.9.1.0 to 0.10.0.0. 
> o LOG4J2-1533:  Updated Kafka client from 0.10.0.0 to 0.10.0.1. 
> o LOG4J2-1487:  Updated JMS test from ActiveMQ 5.13.3 to 5.13.4. 
> o LOG4J2-1551:  Updated JMS test from ActiveMQ 5.13.4 to 5.14.0. 
> o LOG4J2-1543:  Removed deprecated Core API 
> org.apache.logging.log4j.core.util.Constants.UTF_8. 
> o LOG4J2-1544:  Removed deprecated Core API 
> org.apache.logging.log4j.core.util.Assert.requireNonNull(T, String). 
> o LOG4J2-1545:  Removed deprecated Web API 
> org.apache.logging.log4j.web.WebLookup.getServletContext().
> Tag: 
> 
> a)  for a new copy do "git clone 
> https://git-wip-us.apache.org/repos/asf/logging-log4j2.git 
> <https://git-wip-us.apache.org/repos/asf/logging-log4j2.git>" and then "git 
> checkout tags/log4j-2.7-rc1”
> b) for an existing working copy to “git pull” and then “git checkout 
> tags/log4j-2.7-rc1”
> Web Site:  
> <http://rgoers.github.io/log4j2-site/index.html>http://rgoers.github.io/log4j2-site/index.html
>  <http://rgoers.github.io/log4j2-site/index.html>
> 
> Artifacts: 
> https://repository.apache.org/content/repositories/orgapachelogging-1021/ 
> <https://repository.apache.org/content/repositories/orgapachelogging-1021/>
> 
> You may download all the artifacts by executing:
> wget -e robots=off --cut-dirs=7 -nH -r -p -np --no-check-certificate 
> https://repository.apache.org/content/repositories/orgapachelogging-1021/org/apache/logging/log4j/
>  
> <https://repository.apache.org/content/repositories/orgapachelogging-1021/org/apache/logging/log4j/>
> Ralph
> 
> 
> 
> 
> -- 
>  
> 
> Mikael Ståldal
> Senior software developer 
> 
> Magine TV
> mikael.stal...@magine.com <mailto:mikael.stal...@magine.com>    
> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com  
> <http://www.magine.com/>
> 
> Privileged and/or Confidential Information may be contained in this message. 
> If you are not the addressee indicated in this message
> (or responsible for delivery of the message to such a person), you may not 
> copy or deliver this message to anyone. In such case, 
> you should destroy this message and kindly notify the sender by reply email.  
>  
> 
> 
> 
> -- 
>  
> 
> Mikael Ståldal
> Senior software developer 
> 
> Magine TV
> mikael.stal...@magine.com <mailto:mikael.stal...@magine.com>    
> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com  
> <http://www.magine.com/>
> 
> Privileged and/or Confidential Information may be contained in this message. 
> If you are not the addressee indicated in this message
> (or responsible for delivery of the message to such a person), you may not 
> copy or deliver this message to anyone. In such case, 
> you should destroy this message and kindly notify the sender by reply email.  
>  
> 
> 
> 
> -- 
> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | 
> ggreg...@apache.org  <mailto:ggreg...@apache.org>
> Java Persistence with Hibernate, Second Edition 
> <http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> 
> Home: http://garygregory.com/ <http://garygregory.com/>
> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>
> 
> 
> -- 
>  
> 
> Mikael Ståldal
> Senior software developer 
> 
> Magine TV
> mikael.stal...@magine.com <mailto:mikael.stal...@magine.com>    
> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com  
> <http://www.magine.com/>
> 
> Privileged and/or Confidential Information may be contained in this message. 
> If you are not the addressee indicated in this message
> (or responsible for delivery of the message to such a person), you may not 
> copy or deliver this message to anyone. In such case, 
> you should destroy this message and kindly notify the sender by reply email.  
>  
> 
> 
> 
> -- 
> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | 
> ggreg...@apache.org  <mailto:ggreg...@apache.org>
> Java Persistence with Hibernate, Second Edition 
> <http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> 
> Home: http://garygregory.com/ <http://garygregory.com/>
> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>
> 
> 
> -- 
>  
> 
> Mikael Ståldal
> Senior software developer 
> 
> Magine TV
> mikael.stal...@magine.com <mailto:mikael.stal...@magine.com>    
> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com  
> <http://www.magine.com/>
> 
> Privileged and/or Confidential Information may be contained in this message. 
> If you are not the addressee indicated in this message
> (or responsible for delivery of the message to such a person), you may not 
> copy or deliver this message to anyone. In such case, 
> you should destroy this message and kindly notify the sender by reply email.  
>  
> 
> 
> 
> -- 
>  
> 
> Mikael Ståldal
> Senior software developer 
> 
> Magine TV
> mikael.stal...@magine.com <mailto:mikael.stal...@magine.com>    
> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com  
> <http://www.magine.com/>
> 
> Privileged and/or Confidential Information may be contained in this message. 
> If you are not the addressee indicated in this message
> (or responsible for delivery of the message to such a person), you may not 
> copy or deliver this message to anyone. In such case, 
> you should destroy this message and kindly notify the sender by reply email.  
>  
> 
> 
> 
> -- 
> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | 
> ggreg...@apache.org  <mailto:ggreg...@apache.org>
> Java Persistence with Hibernate, Second Edition 
> <http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> 
> Home: http://garygregory.com/ <http://garygregory.com/>
> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>
> 
> 
> -- 
>  
> 
> Mikael Ståldal
> Senior software developer 
> 
> Magine TV
> mikael.stal...@magine.com <mailto:mikael.stal...@magine.com>    
> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com  
> <http://www.magine.com/>
> 
> Privileged and/or Confidential Information may be contained in this message. 
> If you are not the addressee indicated in this message
> (or responsible for delivery of the message to such a person), you may not 
> copy or deliver this message to anyone. In such case, 
> you should destroy this message and kindly notify the sender by reply email.  
>  
> 
> 
> 
> -- 
>  
> 
> Mikael Ståldal
> Senior software developer 
> 
> Magine TV
> mikael.stal...@magine.com <mailto:mikael.stal...@magine.com>    
> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com  
> <http://www.magine.com/>
> 
> Privileged and/or Confidential Information may be contained in this message. 
> If you are not the addressee indicated in this message
> (or responsible for delivery of the message to such a person), you may not 
> copy or deliver this message to anyone. In such case, 
> you should destroy this message and kindly notify the sender by reply email.  
>  
> 
> 
> 
> -- 
> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | 
> ggreg...@apache.org  <mailto:ggreg...@apache.org>
> Java Persistence with Hibernate, Second Edition 
> <http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> 
> Home: http://garygregory.com/ <http://garygregory.com/>
> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>
> 
> 
> -- 
>  
> 
> Mikael Ståldal
> Senior software developer 
> 
> Magine TV
> mikael.stal...@magine.com <mailto:mikael.stal...@magine.com>    
> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com  
> <http://www.magine.com/>
> 
> Privileged and/or Confidential Information may be contained in this message. 
> If you are not the addressee indicated in this message
> (or responsible for delivery of the message to such a person), you may not 
> copy or deliver this message to anyone. In such case, 
> you should destroy this message and kindly notify the sender by reply email.  
>  

Reply via email to