Groovy Control Bus & Expression Control Bus should have similar behavior. The last one doesn't have a check around BeanDefinition during execution.
And it will be enough to catch BeanIsAbstractException in the Groovy Control Bus, as it is possible in the Expression Control Bus.
In additionals: Expression Control Bus allows to invoke commands for prototype Beans.
So, GroovyControlBusFactoryBean.ManagedBeansBinding#getVariable() also should follow with this logic.
The real cause of this issue is raised from the ability to use Bean's aliases in the command scripts. It's difficult to know what is the real BeanName for MessageHandler. But on the other side - we can't use beanFactory.getBeanDefinition(name) via BeanAlias.