Instead of kneeing, how about training a different desirable behavior? In other words, replace the bad behavior with a good one (e.g., sit to greet you and get pet). Show up at the door with a few treats in your pocket, and when the dog runs toward you, ask it to sit, then give it a treat.
The kneeing technique is very old school. You can do much better by engaging the dog with a replacement behavior that gets the dog what it wants (your attention) without risk of hurting it, or yourself. Another short term fix that works wonders is to simply turn, let the dog hit your side, then side step and claim the ground its back feet are standing on. It will jump off and scamper away and come at you from another angle to jump again, and again you just calmly, quietly take a small step and claim the ground. It's all just little steps without any noise, very calmly simply occupying each space from which the dog jumps. Each time the dog has to give up the ground to you, which isn't fun. Most dogs give up this game very quickly, as it's not rewarding -- esp. if you offer them a better game that is (e.g., sit for a treat).
Last edited by Magwart; 12-15-2013 at 10:34 PM.