I would just add that it simply works, both for development and
production purposes.
I have one Glassfish server running behind Apache 2. It serves various
applications including a XWiki instance connected to a PostgreSQL
server. The JVM that runs the Glassfish domain takes a very reasonable
amount of resources... we just forget it and the restarts are really
sparse...
Oh and for having used Glassfish in teaching environments, I can tell
you that it is "students-proof" ;-)