In an ideal world, yes, it would be fantastic to always have an up-to-date session store right in the same machine as the code that's trying to access it. Unfortunately, in any kind of horizontally scaled solution, it's not always possible. If you are dealing with a large group of users, there will come a point where your HTTP front end (whether it be a servlet or PHP script) WILL have to consist of more than one machine. That means, you'll have to either synchronize sessions between the application servers or store the session data in a central repository that all app servers have access to (through either a roll-your-own solution using PHP database calls or though RMI communication to an EJB layer that's handling persistent session data). Either way, the network call is a necessary burden to get your application to scale in any kind of meaningful way.