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 <[email protected]>
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 <[email protected]
> > wrote:
>
>> We have already discussed this here: https://issues.apache.or
>> g/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 <[email protected]>
>> wrote:
>>
>>> On Wed, Sep 28, 2016 at 8:13 AM, Mikael Ståldal <
>>> [email protected]> 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 <[email protected]>
>>>> 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 <
>>>>> [email protected]> 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 <
>>>>>> [email protected]> 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
>>>>>>>
>>>>>>> The problem appeared with commit 
>>>>>>> 170469514b374eb5a5a33bde6936162fd608f097
>>>>>>> by Gary in KafkaManager.java (method releaseSub).
>>>>>>>
>>>>>>> I get this error with kafka-clients 0.8.2.2:
>>>>>>>
>>>>>>> java.lang.NoSuchMethodError: org.apache.kafka.clients.produ
>>>>>>> cer.Producer.close(JLjava/util/concurrent/TimeUnit;)V
>>>>>>> at org.apache.logging.log4j.core.appender.mom.kafka.KafkaManage
>>>>>>> r.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.KafkaAppend
>>>>>>> er.stop(KafkaAppender.java:107)
>>>>>>> at org.apache.logging.log4j.core.config.AbstractConfiguration.s
>>>>>>> top(AbstractConfiguration.java:349)
>>>>>>> at org.apache.logging.log4j.core.LoggerContext.stop(LoggerConte
>>>>>>> xt.java:329)
>>>>>>> at org.apache.logging.log4j.core.AbstractLifeCycle.stop(Abstrac
>>>>>>> tLifeCycle.java:127)
>>>>>>> at org.apache.logging.log4j.core.LoggerContext$1.run(LoggerCont
>>>>>>> ext.java:275)
>>>>>>> at org.apache.logging.log4j.core.util.DefaultShutdownCallbackRe
>>>>>>> gistry$RegisteredCancellable.run(DefaultShutdownCallbackRegi
>>>>>>> stry.java:104)
>>>>>>> at org.apache.logging.log4j.core.util.DefaultShutdownCallbackRe
>>>>>>> gistry.run(DefaultShutdownCallbackRegistry.java:74)
>>>>>>> at java.lang.Thread.run(Thread.java:745)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Sep 26, 2016 at 5:50 PM, Ralph Goers <
>>>>>>> [email protected]> 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"; 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
>>>>>>>>
>>>>>>>> Artifacts: 
>>>>>>>> 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/
>>>>>>>>
>>>>>>>> Ralph
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> [image: MagineTV]
>>>>>>>
>>>>>>> *Mikael Ståldal*
>>>>>>> Senior software developer
>>>>>>>
>>>>>>> *Magine TV*
>>>>>>> [email protected]
>>>>>>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   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.
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> [image: MagineTV]
>>>>>>
>>>>>> *Mikael Ståldal*
>>>>>> Senior software developer
>>>>>>
>>>>>> *Magine TV*
>>>>>> [email protected]
>>>>>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   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: [email protected] | [email protected]
>>>>> 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
>>>>> Home: http://garygregory.com/
>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> [image: MagineTV]
>>>>
>>>> *Mikael Ståldal*
>>>> Senior software developer
>>>>
>>>> *Magine TV*
>>>> [email protected]
>>>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   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: [email protected] | [email protected]
>>> 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
>>> Home: http://garygregory.com/
>>> Tweet! http://twitter.com/GaryGregory
>>>
>>
>>
>>
>> --
>> [image: MagineTV]
>>
>> *Mikael Ståldal*
>> Senior software developer
>>
>> *Magine TV*
>> [email protected]
>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   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.
>>
>
>
>
> --
> [image: MagineTV]
>
> *Mikael Ståldal*
> Senior software developer
>
> *Magine TV*
> [email protected]
> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   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: [email protected] | [email protected]
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
Home: http://garygregory.com/
Tweet! http://twitter.com/GaryGregory

Reply via email to