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
