
I think by shutting her out of the room before she jumps on your son isn't going ot teach her that she shouldn't jump on him in the first place (allthough it should stop the habbit getting worse).
My Mastiff used to jump on my kids or my husband if they were laying on the sofa, he used to think it was a great game - jump on the poeple and they get a shock, and start making a noise "argh, he's squashing me GET HIM OFF, GET HIM OFF "- what good fun!! Not good fun for the people he was jumping on!! I stopped him by distracting him with a toy when I could see he was about to jump (to give him an alternative), if that didn't work and he tried to jump up he would be taken calmly out of the room and shut in the kitchen for a few minutes to calm down, then let back in the livingroom, if he did it again he would be shut in the kitchen for a little bit longer.
Now he doesn't jump on people that are laying on the sofa :)
I don't think the reason why she does it is very important, weather she wants to play or be dominant or just cuddle up to sleep on top of him, the important thing is teaching her not to do it. The calmer you stay the better as if you start shouting at her or pulling her collar roughly it's going to make things more exiting for her and give her a reason to keep jumping on him.
You can teach her not to do this, but you have to be consistent - she needs the same reaction every single time. Good luck, I know what it's like to be sat around in the evening enjoying some qiuet time and BAM!!!! a doggy missile appears ontop of somebody!!
Ohh, one last thing, if you try to distract her with a toy and she shows some interest in it, give her lots of praise. Lots of praise &/treats for the beahvior you want, coupled with calm, minimal reactions for things you don't make it much clearer to her what you want from her.