Re: Interrupting a beanshell script in JConsole
Jean-Philippe Daigle <[email protected]> Mon, 20 Jul 2009 23:23:16 -0400
| Newsgroups | gmane.comp.java.beanshell.user |
|---|---|
| Message-ID | <[email protected]> |
Thanks, David. I can't see a clean fix either. I've experimented with subclassing JConsole and catching the Ctrl+C keyPressed(), but there's no good way to stop the interpreter. A crazy hack I imagined that would handle ctrl+c correctly might be: * Subclass JConsole and provide your own keyPressed(KeyEvent) implementation that calls JConsole's, BUT detects ctrl+c and sets some global flag to terminate loops. * Never ever ever do while(true) in a script, always do while(!flag). * Reset flag to false on every keystroke that's NOT a ctrl-C. Looks ugly, but being mindful of this in scripts (as you suggested) seems to be the way to go. On Mon, Jul 20, 2009 at 9:48 PM, David A. Lee<[email protected]> wrote: > Same as in java, I know no way to do this.=A0 There is no equivilent to > signals in java. > The best I can suggest is to "simulate a breakpoint". > That is intersperse your loop to a callback into your own code like > for( ... ) { > =A0=A0 code > =A0=A0 if( my_breakpoint_is_set) > =A0=A0=A0=A0=A0 throw new MyException("stop here"); > } > > > David A. Lee > [email protected] > http://www.calldei.com > http://www.xmlsh.org > 812-482-5224 > > Jean-Philippe Daigle wrote: > > On Mon, Jul 20, 2009 at 5:52 PM, David A. Lee <[email protected]> wrote: >> >> Close the console window ? >> >> David A. Lee >> [email protected] =A0http://www.calldei.com >> http://www.xmlsh.org >> 812-482-5224 >> >> >> >> Jean-Philippe Daigle wrote: >>> >>> Say you're running a loop in a beanshell script, like this: >>> >>> while(true){ print("uh-oh!"); }; >>> >>> The above will run forever and I haven't found a way to interrupt it. >>> I've tried: >>> * ctrl+c >>> * pause key >>> * break key >>> * ctrl+break >>> >>> Is there any way to interrupt a loop running in a JConsole? >>> > > Yes, closing the console works quite well, but I was looking to interrupt > the loop without losing the session. > > An example would be if you have a loop running that prints out statistics > every 5 seconds, and you want to interrupt it and use your session some > more. > ---------------------------------------------------------------------------= --- Enter the BlackBerry Developer Challenge = This is your chance to win up to $100,000 in prizes! For a limited time, = vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize= = details at: http://p.sf.net/sfu/Challenge