From your post, I'm going to presume that he's never done this before, and only recently, because he's had a year off, he's been rushing at the canter and not standing still.
What I think you should do is concentrate on one thing at a time. Example, if you want to get him better at standing still, do some halt, walk, trot exercises.
walk him around and at random stops ask him to halt. At first do it for a few seconds and gradually increase it. If you do this randomly, he'll have to be paying attention to you and he'll always be waiting to stop. At the trot you can do trot to walk to halt transitions as well as trot to halt. You can also incorporating backing up and springing right into a trot, with no walk steps.
I would personally not move onto the canter until he has a good halt. Once he has a good halt, you can move on.
When you ask him to canter and he takes off, bring him back by doing a circle and getting smaller and smaller. It will be very difficult for him keep canter if the circle is small. When he comes back to whichever gait you want (trot or walk) ask him again. Keep doing this until you can ask him to canter and he responds well.
A different thing you can do is when you ask him to canter and he takes off, do a circle and once you feel him relax and his pace slow down, go out of the circle and continue on. When you feel him speed up again, do another circle. He'll find that it will be easier (less work) to just canter properly.
you could also set up cones, teach him shoulders in, half passes and set up caveletti poles to keep things interesting.