This is a typical problem.
Being able to dynamically reload classes is the exception rather than the normal behaviour, so Yes, you do have to restart every time you change a class file.
You'd find the same thing if you were designing a Swing application. If you start the application, access a class and then alter and recompile the class, you won't see the changes without restarting the application.
This expectation has been created (I believe) by the dynamic reloading of JSPs. This is a longer topic than I have time to write right now
Dave