You are entering way too many requests for the publishing company to grant you with. And that, for free. Listen, nothing comes for free today and if something is, I bet there are many ways you are going to pay them later.
99% availability, 100MB database size (which I had to really struggle hard to get for my cousins' website) and other services. No company would give you for free. If they will, they will cut short many areas such as bandwidth to 10GB per month, RAM usage to 128MB or CPU usage to a top limit and so on.
If you really want to get all this for free, try this:
Use your own machine as hosting server. It works for every programming framework. You just have to enable a static IP address that can be accessed from external networks such as Internet. You can get a static IP address or get a domain name to get the IP address for that one. Then update your machine's settings to allow users to communicate through network over your own machine. Which is going to be free for you. You just have to pay for that IP address.
I wrote a similar article for ASP.NET, I am sure Java built web applications can use the similar methods for network configuration,
A simple guide to setting up home server using IIS and ASP.NET[
^]. Use the sections for system configuration. On other systems the settings are a bit different but overall similar.
But, I must warn you, you should pay a real deal of attention to security and management of your servers.