Rather general question, but here's a start.
A distributable application is an app (for the SCWCD purposes a web-app) which run on multiple servers. Usually the purpose for this is for load-balancing.
Lets say, the app is distributed across two servers A and B (it can be more than 2). In such a situation, the code, config files etc on both these servers would be identical.
When the user makes a request it passes through a load balancing server (physical or virtual) which directs the request to one of these servers.
Which server is chosen is at the discretion of the the load balancing server. This is completely transparent to the user.
What is important however is that whilst the user makes more requests, these requests will not necessarily be directed to the same server.
e.g. request1 -> server A
request2 -> server B
request3 -> server B
request4 -> server B
request5 -> server A
....
etc.
This has important implications for the developer of the web app. If it's a distributed app, the developer has to make sure that the application doesn't rely on servletContext attributes. This is because any attributes added to the
servlet context are NOT migrated to the servlet context objects on the other web servers. Also, if the user is using a session, and the next request ends up going to a different server, the session migrates to the other server. This has implications for the objects bound to this session.
Hope that helps