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