I've seen in the official J2EE tutorial that it lists synchronizing methods and objects as a way to keep your code thread-safe. However I've been told on the official Java forums that this is not a 100% safe solution because the J2EE container can load more than one instance of a servlet into the container at a time and since synchronization only works on a single object this technique is not 100% thread-safe.
I don't think that's quite true. The container can instantiate multiple servlets of the same type if it wants to.
Anyway, you want your web application to be able to run multiple threads at the same time, so synchronising all the methods will damage the performance. Instead, you should just be careful to ensure that multiple requests do not interfere with each other, and just synchronise things that needs to be synchronised.
I was just pointing out that your statement "Only one instance of a servlet per application can be loaded into the Container" isn't true - there's nothing in the specification that says that. It might be true for some containers, but you shouldn't rely on it.