Can I avoid problems with concurrent access to bean variables by implementing the SingleThreadModel? Or can the scope attribute be used to ensure that the same bean cannot be concurrently used by more than one thread?
If a servlet implements this interface, the servlet will be thread safe. However, this interface does not prevent synchronization problems that result from servlets accessing shared resources such as static class variables or classes outside the scope of the servlet.In other words, access to a servlet's instance variables is thread safe, but that is it.
Now, in response to your other question about scope... Most times your scope will be page, request or session. In each of these, you will probably only have one thread handling the JavaBean - the thread handling the HttpServletRequest. However, if a Bean has application scope (acessible from multiple servlets in the application) you need to synchronize access to this Bean.