JB,

Thank  you for clarifying that for me.  Your quick reply was very much
appreciated!

-Steve

On Tue, Feb 4, 2014 at 9:41 AM, Jean-Baptiste Onofré <[email protected]> wrote:
> Hi Steve,
>
> no worries, you can do a restart via the service wrapper.
>
> Basically, it's what you do when you do restart on the service wrapper (on
> Windows with service restart, or on Unix with /etc/init.d/karaf restart).
>
> Regards
> JB
>
>
> On 02/04/2014 03:24 PM, Steve wrote:
>>
>> Karaf users,
>>
>>
>> A little background:
>>
>> I have a bundle that periodically needs to restart its host Karaf
>> container.  I accomplish this by setting the “karaf.restart”
>> system-property to “true” and then stopping the system-bundle.  This
>> worked perfectly when Karaf was invoked directly via the bat files;
>> however, when using the service wrapper an attempt to restart simply
>> resulted in Karaf shutting down:
>>
>> System.setProperty("karaf.restart", "true");
>> bundleContext.getBundle(0).stop();
>>
>> I checked the mailing list archives and determined that this was
>> likely due to the Java Service Wrapper’s default behavior to shutdown
>>
>> (http://karaf.922171.n3.nabble.com/Ability-to-self-restart-karaf-WAS-Infamous-permgen-leak-tp3589167p3590128.html).
>>   The advice mentioned in the previous thread suggested changing the
>> Java Service Wrapper’s default behavior from “SHUTDOWN” to “RESTART”
>> via a wrapper configuration parameter (“wrapper.on_exit.default”).
>> While this works, it does prevent a normal shutdown as the wrapper
>> will restart the application no matter what.
>>
>> After digging through the Java Service Wrapper documentation further I
>> discovered the filter mechanism by which the wrapper monitors the
>> console output of an application for “triggers” upon which it can act.
>>   I was able to add a “trigger” to my code, via a System.out statement,
>> and indeed the wrapper initiates a restart while still allowing the
>> application to function correctly when invoked via the normal bat
>> files (sans-wrapper):
>>
>> System.setProperty("karaf.restart", "true");
>> System.out.println("wrapper_restart_requested"); //wrapper restart trigger
>> bundleContext.getBundle(0).stop();
>>
>> Question:
>>
>> Are there any negative implications to the Karaf container by allowing
>> the wrapper to initiate a restart rather than stopping the
>> system-bundle directly?  Does this introduce the possibility of
>> leaving the container in an inconsistent/corrupt state.  I speculate
>> that the answer to this is “no”; however, I was hoping others
>> (especially core developers) might be able to give me a yes/no in
>> regards to the validity of this approach (or perhaps suggest an
>> alternative).
>>
>> Thanks,
>> Steve
>>
>
> --
> Jean-Baptiste Onofré
> [email protected]
> http://blog.nanthrax.net
> Talend - http://www.talend.com

Reply via email to