I have a Java Web application backed by a database. Both are hosted in Amazon EC2. If the Internet is down, I need to allow internal users to be able to continue to work and somehow update the hosted service when the Internet is available again. Is this possible? How would I design such a solution.
When dealing with a web application there are two components of primary interest - the server and the network.
A java web application runs in an application server (this is an application such as jBoss, Weblogic, or self contained jetty) on a server itself (linux, windows, etc...).
If the application server is not running, the applications within it are not running and you will not be able to connect to them. This is true no matter if the applications within them are providing web services or more traditional web pages.
If the server itself is down, the applications running on the server (the application server, database and the like) are not running.
If the network between you and the server is down then, well, the network is down and you cannot connect to the applications (no matter if they are running or not).
The standard approach to dealing with the server is down is redundancy - putting the application on multiple servers so that if one fails to connect it will attempt to connect to another one. This does not guarantee that it will always work (a network outage in a wide enough area or a cascading problem in cloud computing can take multiple systems off line).
The specifics of how much and what redundancy are necessary depends on a given application's requirements. Some people need 99.999% uptime, some just need 99% uptime (and wait for the network or the system to correct itself rather than investing in additional redundancy).
Remember that when planning for redundancy it is likely necessary that multiple components will need to be redundant. If one has multiple redundant web applications all using the same database, and the database goes down you still have a single point of failure with the database.
Ok, so lets say the network has gone down after you have loaded the page. You are now offline.
Html 5 provides the possibility for having some amount of local processing. Note that this means that you can only work with the code and data that you have on the machine. If the business logic for the application is hosted on the cloud it would mean that when the cloud is unavailable, that portion of logic is unavailable.
Some resources for html 5 offline applications:
A google search for "html5 offline web apps" (and related queries) will provide more resources.