Haven't used the Scheduler but looking at the code quickly it seems the execution thread is that of the jmx Timer, and it's not very obvious if it does a clean shutdown (it creates daemon thread by default, though).
So, do you get a clean shutdown?
If not, you can try to synchronize your serviceStop() with e.g. a Boolean shutdown flag inside your MBean. You doSomething() will also synchronise on that and make sure also it is not set (in case a call comes after serviceStop() has been called).
I have it working according to your suggestion!! I had to override the stopService() method with a synchronized boolean variable.