The only free J2ee host I know of is
myjavaserver.com and they haven't taken new registrations in a while.
Our
Servlets FAQ has a list of J2EE providers.
You should be able to find basic hosting for around $10 a month.
If you have an always-on internet connection, there's several options for hosting from your home. Personally, I have a DSL line with a static IP address and PC running Ubuntu and
Tomcat to serve my own site.
Correction: our FAQ also points to
eatj.com, which appears to offer free hosting. Of course, they only give you 64mb of memory. My home server uses more than that just running
pebble.
[ October 28, 2008: Message edited by: Joe Ess ]