2016-11-21 10:30 GMT+01:00 CLEMENT Jean-Philippe <
jean-philippe.clem...@fr.thalesgroup.com>:

> Would be great ! It would also be nice to be able to call it
> programmatically, or, at least have a default shutdown timeout.
>
> May I open a Jira?
>

Yes please. We'll see that's doable.
The various commands can already be called programmatically by using the
org.apache.karaf.system.SystemService
OSGi service.  We just need an additional parameter for the shutdown
timeout.


>
> Regards,
> JP
>
> -----Message d'origine-----
> De : Jean-Baptiste Onofré [mailto:j...@nanthrax.net]
> Envoyé : lundi 21 novembre 2016 10:27
> À : user@karaf.apache.org
> Objet : Re: Karaf shutdown
>
> +1
>
> Regards
> JB
>
> On 11/21/2016 10:25 AM, Guillaume Nodet wrote:
> > We could easily add an option to the shutdown command for that.
> >
> > 2016-11-21 10:21 GMT+01:00 CLEMENT Jean-Philippe
> > <jean-philippe.clem...@fr.thalesgroup.com
> > <mailto:jean-philippe.clem...@fr.thalesgroup.com>>:
> >
> >     Ok, things clear, thank you for the detailed explanation :)____
> >
> >     __ __
> >
> >     In fact I just want to ensure Karaf to shut down within a given time
> >     limit. Is there a way to do so?____
> >
> >     __ __
> >
> >     Regards,____
> >
> >     JP____
> >
> >     __ __
> >
> >     *De :*Guillaume Nodet [mailto:gno...@apache.org
> >     <mailto:gno...@apache.org>]
> >     *Envoyé :* vendredi 18 novembre 2016 20:16
> >
> >
> >     *À :* user
> >     *Objet :* Re: Karaf shutdown____
> >
> >     __ __
> >
> >     __ __
> >
> >     __ __
> >
> >     2016-11-18 17:58 GMT+01:00 CLEMENT Jean-Philippe
> >     <jean-philippe.clem...@fr.thalesgroup.com
> >     <mailto:jean-philippe.clem...@fr.thalesgroup.com>>:____
> >
> >     Well, I’m not too sure to understand :)____
> >
> >      ____
> >
> >     I will only focus on bundle 0 and the stopping event I’m expecting
> >     from it. So, I put “that” bundle listener on the bundle 0 not on any
> >     other bundle. But, the way I get the bundle 0 is via a bundleContext
> >     which is injected via Blueprint.____
> >
> >      ____
> >
> >     That said, the spec says I should first get the event. Should not be
> >     tied to the actual stopping order, isn’t it (Blueprint or
> > not)?____
> >
> >     __ __
> >
> >     The STOPPING events are distributed to various listeners
> >     synchronously.  The blueprint extender will receive it before your
> >     own listener (because it's registered before), so the preemptive
> >     shutdown will take place before you can do anything.  This also
> >     means that your bundle containing the listener will be stopped
> >     before receiving the STOPPING event.____
> >
> >     Note that the purpose of this behavior is to avoid having blueprint
> >     bundles trying to call a missing mandatory dependency during
> >     shutdown, amongst other things.  If your bundle stuck waiting for a
> >     blueprint dependency or something else ?  There is certainly still
> >     some room for improvements in blueprint-core when shutting down
> >     bundles.____
> >
> >     __ __
> >
> >      ____
> >
> >          ____
> >
> >         Regards,____
> >
> >         JP____
> >
> >          ____
> >
> >         *De :*Guillaume Nodet [mailto:gno...@apache.org
> >         <mailto:gno...@apache.org>]
> >         *Envoyé :* vendredi 18 novembre 2016 17:04____
> >
> >
> >         *À :* user
> >         *Objet :* Re: Karaf shutdown____
> >
> >          ____
> >
> >         You have 2 events for each bundle (but for the system bundle,
> >         the first event which is a STOPPING event).____
> >
> >         For each of those 2 events, the first one is a STOPPING, then
> >         the framework calls the activator stop, then fire a STOPPED
> >         event.____
> >
> >          ____
> >
> >         Are you sure you're using activators ? because the problem may
> >         be completely different if using a blueprint extender and a
> >         blueprint event that does not stop.____
> >
> >         In that case, what happens is that the blueprint extender
> >         intercepts the STOPPING event from the system bundle and
> >         preemptively shutdown all blueprint bundles in an orderly
> >         fashion.  This usually helps by choosing a better stopping order
> >         than the default one, depending on service used between
> >         bundles.  The problem is that given the extender stops the
> >         blueprint bundles preemptively, the bundles will be stopped
> >         before the framework has a change to send the STOPPING event for
> >         the bundle.  It's actually the same as if you would stop the
> >         blueprint extender in a running framework: all blueprint
> >         containers will be destroyed, but the lifecycle of the bundles
> >         would not be affected.  This behavior can be turned off by
> > using____
> >
> >           *org.apache.aries.blueprint.preemptiveShutdown=false*____
> >
> >         in the etc/config.properties file.____
> >
> >          ____
> >
> >         2016-11-18 16:49 GMT+01:00 CLEMENT Jean-Philippe
> >         <jean-philippe.clem...@fr.thalesgroup.com
> >         <mailto:jean-philippe.clem...@fr.thalesgroup.com>>:____
> >
> >         In fact I guess that’s the problem, the event seems not to be
> >         fired before stopping bundles.____
> >
> >          ____
> >
> >         When all bundles react normally, i.e. they stop, I get the
> >         stopping event. When at least one does not stop as expected,
> >         then I get no stopping event. Would you be kind enough to try
> >         again with a non-stopping-bundle and displaying the event
> > type?____
> >
> >          ____
> >
> >         Regards,____
> >
> >         JP____
> >
> >          ____
> >
> >         *De :*Guillaume Nodet [mailto:gno...@apache.org
> >         <mailto:gno...@apache.org>]
> >         *Envoyé :* vendredi 18 novembre 2016 16:40____
> >
> >
> >         *À :* user
> >         *Objet :* Re: Karaf shutdown____
> >
> >          ____
> >
> >          ____
> >
> >          ____
> >
> >         2016-11-18 15:01 GMT+01:00 CLEMENT Jean-Philippe
> >         <jean-philippe.clem...@fr.thalesgroup.com
> >         <mailto:jean-philippe.clem...@fr.thalesgroup.com>>:____
> >
> >         Did you also add a bundle which prevents stopping ?____
> >
> >          ____
> >
> >         No, but the first event is sent before actually stopping any
> >         bundle.____
> >
> >          ____
> >
> >              ____
> >
> >             PS: in your traces which event is the shutdown itself?____
> >
> >          ____
> >
> >         It's not, because I paste a wrong output.____
> >
> >         Here's the full output, and the interesting event is the first
> >         one.  It's should be a */STOPPING /*event.____
> >
> >          ____
> >
> >         *karaf*@root()> ($.contextbundle 0)stop 1
> >
> >
> >
> >          org.osgi.framework.BundleEvent[source=org.
> eclipse.osgi_3.10.101.v20150820-1432
> >         [0]]____
> >
> >         org.osgi.framework.BundleEvent[source=org.jline_3.0.1
> > [34]]____
> >
> >         org.osgi.framework.BundleEvent[source=org.jline_3.0.1
> > [34]]____
> >
> >
> > org.osgi.framework.BundleEvent[source=org.fusesource.jansi_1.14.0
> > [33]]____
> >
> >
> > org.osgi.framework.BundleEvent[source=org.fusesource.jansi_1.14.0
> > [33]]____
> >
> >         org.osgi.framework.BundleEvent[source=org.apache.sshd.core_1.2.0
> >         [32]]____
> >
> >         org.osgi.framework.BundleEvent[source=org.apache.sshd.core_1.2.0
> >         [32]]____
> >
> >         org.osgi.framework.BundleEvent[source=org.apache.
> servicemix.bundles.not-yet-commons-ssl_0.3.11.1
> >         [31]]____
> >
> >         org.osgi.framework.BundleEvent[source=org.apache.
> servicemix.bundles.not-yet-commons-ssl_0.3.11.1
> >         [31]]____
> >
> >         ...____
> >
> >          ____
> >
> >              ____
> >
> >             Regards,____
> >
> >             JP____
> >
> >              ____
> >
> >             *De :*Guillaume Nodet [mailto:gno...@apache.org
> >             <mailto:gno...@apache.org>]
> >             *Envoyé :* vendredi 18 novembre 2016 14:26____
> >
> >
> >             *À :* user
> >             *Objet :* Re: Karaf shutdown____
> >
> >              ____
> >
> >             You must be doing something wrong.____
> >
> >             I added this small bit of code to one of karaf's
> > activators:____
> >
> >             
> > *bundleContext*.getBundle(0).getBundleContext().addBundleListener(*new
> *SynchronousBundleListener() {
> >                 @Override
> >                 *public void *bundleChanged(BundleEvent event) {
> >                     System.*/out/*.println(event);
> >                 }
> >             });____
> >
> >              ____
> >
> >             Here's the output when stopping under equinox:____
> >
> >             *karaf*@root()> ($.contextbundle 0)stop 1
> >
> >              org.osgi.framework.BundleEvent[source=org.apache.
> karaf.shell.core_4.1.0.SNAPSHOT
> >             [28]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.shell.commands_4.1.0.SNAPSHOT
> >             [27]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.shell.commands_4.1.0.SNAPSHOT
> >             [27]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.service.core_4.1.0.SNAPSHOT
> >             [26]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.service.core_4.1.0.SNAPSHOT
> >             [26]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.package.core_4.1.0.SNAPSHOT
> >             [25]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.package.core_4.1.0.SNAPSHOT
> >             [25]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.management.server_4.1.0.SNAPSHOT
> >             [24]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.management.server_4.1.0.SNAPSHOT
> >             [24]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.log.core_4.1.0.SNAPSHOT
> >             [23]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.log.core_4.1.0.SNAPSHOT
> >             [23]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.kar.core_4.1.0.SNAPSHOT
> >             [22]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.kar.core_4.1.0.SNAPSHOT
> >             [22]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.jaas.modules_4.1.0.SNAPSHOT
> >             [21]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.jaas.modules_4.1.0.SNAPSHOT
> >             [21]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.jaas.config_4.1.0.SNAPSHOT
> >             [20]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.jaas.config_4.1.0.SNAPSHOT
> >             [20]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.jaas.command_4.1.0.SNAPSHOT
> >             [19]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.jaas.command_4.1.0.SNAPSHOT
> >             [19]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.instance.core_4.1.0.SNAPSHOT
> >             [18]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.instance.core_4.1.0.SNAPSHOT
> >             [18]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.features.command_4.1.0.SNAPSHOT
> >             [17]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.features.command_4.1.0.SNAPSHOT
> >             [17]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.diagnostic.core_4.1.0.SNAPSHOT
> >             [16]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.diagnostic.core_4.1.0.SNAPSHOT
> >             [16]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.config.core_4.1.0.SNAPSHOT
> >             [13]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.config.core_4.1.0.SNAPSHOT
> >             [13]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.bundle.core_4.1.0.SNAPSHOT
> >             [12]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.bundle.core_4.1.0.SNAPSHOT
> >             [12]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> aries.jmx.whiteboard_1.1.5
> >             [10]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> aries.jmx.whiteboard_1.1.5
> >             [10]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> aries.jmx.core_1.1.7
> >             [9]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> aries.jmx.core_1.1.7
> >             [9]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> aries.jmx.api_1.1.5
> >             [8]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> aries.jmx.api_1.1.5
> >             [8]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.deployer.features_4.1.0.SNAPSHOT
> >             [14]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.deployer.features_4.1.0.SNAPSHOT
> >             [14]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.deployer.kar_4.1.0.SNAPSHOT
> >             [15]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.deployer.kar_4.1.0.SNAPSHOT
> >             [15]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> aries.util_1.1.3
> >             [11]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> aries.util_1.1.3
> >             [11]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.features.core_4.1.0.SNAPSHOT
> >             [7]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> karaf.features.core_4.1.0.SNAPSHOT
> >             [7]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> felix.fileinstall_3.5.6
> >             [6]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> felix.fileinstall_3.5.6
> >             [6]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> felix.configadmin_1.8.12
> >             [5]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.apache.
> felix.configadmin_1.8.12
> >             [5]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.ops4j.
> pax.logging.pax-logging-log4j2_1.9.1
> >             [4]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.ops4j.
> pax.logging.pax-logging-log4j2_1.9.1
> >             [4]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.ops4j.
> pax.logging.pax-logging-api_1.9.1
> >             [3]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.ops4j.
> pax.logging.pax-logging-api_1.9.1
> >             [3]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.ops4j.
> pax.url.mvn_2.5.1
> >             [2]]____
> >
> >             org.osgi.framework.BundleEvent[source=org.ops4j.
> pax.url.mvn_2.5.1
> >             [2]]____
> >
> >
> > gnodet•apache-karaf-minimal/target/assembly*(*master*⚡**)*»____
> >
> >              ____
> >
> >              ____
> >
> >              ____
> >
> >              ____
> >
> >             2016-11-18 13:29 GMT+01:00 CLEMENT Jean-Philippe
> >             <jean-philippe.clem...@fr.thalesgroup.com
> >             <mailto:jean-philippe.clem...@fr.thalesgroup.com>>:____
> >
> >             That’s exactly what I did. The listener is not called at
> >             all. Looking at bundles, some are Active, some Resolved, one
> >             Installed (OSGi System Bundle 3.10.2.v20150203-1939) and one
> >             Waiting (one of mine).____
> >
> >              ____
> >
> >             public final class KarafStopper {____
> >
> >                 private static final Logger LOG     =
> >             LogManager.getLogger(KarafStopper.class);____
> >
> >                 private static final long   TIMEOUT = 3 *
> >             1000;                               // in milliseconds____
> >
> >              ____
> >
> >                 private final Bundle        karaf;____
> >
> >              ____
> >
> >                 public KarafStopper(final BundleContext context) {____
> >
> >                     System.out.println("=> blabla");____
> >
> >                     karaf = context.getBundle(0);____
> >
> >                     karaf.getBundleContext().addBundleListener(new
> >             SynchronousBundleListener() {____
> >
> >                         @Override____
> >
> >                         public void bundleChanged(final BundleEvent
> >             event) {____
> >
> >                             System.out.println("Karaf: " +
> >             event.getType());____
> >
> >                         }____
> >
> >                     });____
> >
> >                 }____
> >
> >              ____
> >
> >                 public void shutdown() {____
> >
> >                     try {____
> >
> >                         final Thread watchdog = new Thread(() -> {____
> >
> >                             try {____
> >
> >                                 Thread.sleep(TIMEOUT);____
> >
> >                                 // Karaf refuses to stop____
> >
> >                                 LOG.error(() -> "Karaf did not stop
> >             gracefully");____
> >
> >                                 System.exit(-1);____
> >
> >                             } catch (final InterruptedException e)
> > {____
> >
> >                                 // Karaf stopped normally____
> >
> >                             }____
> >
> >                         });____
> >
> >              ____
> >
> >                         watchdog.setDaemon(true);____
> >
> >                         watchdog.start();____
> >
> >                         System.out.println("Bye bye");____
> >
> >                         karaf.stop(Bundle.STOP_TRANSIENT);____
> >
> >                         System.out.println("So long!");____
> >
> >                     } catch (final BundleException e) {____
> >
> >                         System.out.println("Oooooooooooops: " +
> > e);____
> >
> >                         LOG.error(() -> "Issue while stopping karaf",
> >             e);____
> >
> >                     }____
> >
> >                 }____
> >
> >             }____
> >
> >              ____
> >
> >             Regards,____
> >
> >             JP____
> >
> >              ____
> >
> >             *De :*Guillaume Nodet [mailto:gno...@apache.org
> >             <mailto:gno...@apache.org>]
> >             *Envoyé :* vendredi 18 novembre 2016 13:01____
> >
> >
> >             *À :* user
> >             *Objet :* Re: Karaf shutdown____
> >
> >              ____
> >
> >             Can you write a simple SynchronousBundleListener that prints
> >             to stdout all received events and paste the output when
> >             stopping the framework for felix and equinox ?____
> >
> >              ____
> >
> >             2016-11-18 12:10 GMT+01:00 CLEMENT Jean-Philippe
> >             <jean-philippe.clem...@fr.thalesgroup.com
> >             <mailto:jean-philippe.clem...@fr.thalesgroup.com>>:____
> >
> >             Well, that’s not the case when a bundle refuses to stop – I
> >             get no event. Ah I forgot to mention that Equinox is used
> >             instead of Felix.____
> >
> >              ____
> >
> >             May I open a bug for this?____
> >
> >              ____
> >
> >             Regards,____
> >
> >             JP____
> >
> >              ____
> >
> >              ____
> >
> >             *De :*Guillaume Nodet [mailto:gno...@apache.org
> >             <mailto:gno...@apache.org>]
> >             *Envoyé :* vendredi 18 novembre 2016 11:52
> >             *À :* user
> >             *Objet :* Re: Karaf shutdown____
> >
> >              ____
> >
> >             The SynchronousBundleListener is the way to go.____
> >
> >             You should receive a STOPPING event for the system bundle
> >             before any other bundle is actually stopped.____
> >
> >              ____
> >
> >             2016-11-18 11:38 GMT+01:00 CLEMENT Jean-Philippe
> >             <jean-philippe.clem...@fr.thalesgroup.com
> >             <mailto:jean-philippe.clem...@fr.thalesgroup.com>>:____
> >
> >             Is there a way to get a shutdown event?____
> >
> >              ____
> >
> >             Regards,____
> >
> >             JP____
> >
> >              ____
> >
> >             *De :*CLEMENT Jean-Philippe
> >             [mailto:jean-philippe.clem...@fr.thalesgroup.com
> >             <mailto:jean-philippe.clem...@fr.thalesgroup.com>]
> >             *Envoyé :* jeudi 17 novembre 2016 17:03
> >             *À :* user@karaf.apache.org <mailto:user@karaf.apache.org>
> >             *Objet :* Karaf shutdown____
> >
> >              ____
> >
> >             Dear Karaf addicts :)____
> >
> >              ____
> >
> >             I would like Karaf to stop. This may fail to happen when (at
> >             least) a bundle does not end. So I added a watchdog which
> >             exits Java when a time limit has been exceeded (note: maybe
> >             there is already a way to do so - ?). The way I coded it
> >             does not work when the shutdown is made via the Karaf
> >             prompt, so I decided to enhance it.____
> >
> >              ____
> >
> >             Googling “Karaf shutdown hook”, I found an old thread
> >             talking about SynchronousBundleListener. The issue I’m
> >             facing is that I get no event when performing
> >             bundle0.stop(Bundle.STOP_TRANSIENT) and one of the bundles
> >             refuses to stop. The listener is registered via
> >             bundle0.getBundleContext().addBundleListener(new
> >             SynchronousBundleListener() { … }).____
> >
> >              ____
> >
> >             Is it normal? How to force Karaf to shutdown?____
> >
> >              ____
> >
> >             PS: Karaf version is 4.0.7____
> >
> >              ____
> >
> >             JP____
> >
> >
> >
> >             ____
> >
> >              ____
> >
> >             -- ____
> >
> >             ------------------------
> >             Guillaume Nodet
> >             ------------------------____
> >
> >             Red Hat, Open Source Integration____
> >
> >              ____
> >
> >             Email: gno...@redhat.com <mailto:gno...@redhat.com>
> >             Web: http://fusesource.com <http://fusesource.com/>
> >             Blog: http://gnodet.blogspot.com/
> >             <http://gnodet.blogspot.com/>____
> >
> >              ____
> >
> >
> >
> >             ____
> >
> >              ____
> >
> >             -- ____
> >
> >             ------------------------
> >             Guillaume Nodet
> >             ------------------------____
> >
> >             Red Hat, Open Source Integration____
> >
> >              ____
> >
> >             Email: gno...@redhat.com <mailto:gno...@redhat.com>
> >             Web: http://fusesource.com <http://fusesource.com/>
> >             Blog: http://gnodet.blogspot.com/
> >             <http://gnodet.blogspot.com/>____
> >
> >              ____
> >
> >
> >
> >             ____
> >
> >              ____
> >
> >             -- ____
> >
> >             ------------------------
> >             Guillaume Nodet
> >             ------------------------____
> >
> >             Red Hat, Open Source Integration____
> >
> >              ____
> >
> >             Email: gno...@redhat.com <mailto:gno...@redhat.com>
> >             Web: http://fusesource.com <http://fusesource.com/>
> >             Blog: http://gnodet.blogspot.com/
> >             <http://gnodet.blogspot.com/>____
> >
> >              ____
> >
> >
> >
> >         ____
> >
> >          ____
> >
> >         -- ____
> >
> >         ------------------------
> >         Guillaume Nodet
> >         ------------------------____
> >
> >         Red Hat, Open Source Integration____
> >
> >          ____
> >
> >         Email: gno...@redhat.com <mailto:gno...@redhat.com>
> >         Web: http://fusesource.com <http://fusesource.com/>
> >         Blog: http://gnodet.blogspot.com/
> > <http://gnodet.blogspot.com/>____
> >
> >          ____
> >
> >
> >
> >         ____
> >
> >          ____
> >
> >         -- ____
> >
> >         ------------------------
> >         Guillaume Nodet
> >         ------------------------____
> >
> >         Red Hat, Open Source Integration____
> >
> >          ____
> >
> >         Email: gno...@redhat.com <mailto:gno...@redhat.com>
> >         Web: http://fusesource.com <http://fusesource.com/>
> >         Blog: http://gnodet.blogspot.com/
> > <http://gnodet.blogspot.com/>____
> >
> >          ____
> >
> >
> >
> >     ____
> >
> >     __ __
> >
> >     -- ____
> >
> >     ------------------------
> >     Guillaume Nodet
> >     ------------------------____
> >
> >     Red Hat, Open Source Integration____
> >
> >     __ __
> >
> >     Email: gno...@redhat.com <mailto:gno...@redhat.com>
> >     Web: http://fusesource.com <http://fusesource.com/>
> >     Blog: http://gnodet.blogspot.com/
> > <http://gnodet.blogspot.com/>____
> >
> >     __ __
> >
> >
> >
> >
> > --
> > ------------------------
> > Guillaume Nodet
> > ------------------------
> > Red Hat, Open Source Integration
> >
> > Email: gno...@redhat.com <mailto:gno...@redhat.com>
> > Web: http://fusesource.com <http://fusesource.com/>
> > Blog: http://gnodet.blogspot.com/
> >
>
> --
> Jean-Baptiste Onofré
> jbono...@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com
>



-- 
------------------------
Guillaume Nodet
------------------------
Red Hat, Open Source Integration

Email: gno...@redhat.com
Web: http://fusesource.com
Blog: http://gnodet.blogspot.com/

Reply via email to