I'm working with glassfish since several months and it seems to be rock solid. Redeployment (usually a critical stuff, because of reloading of classes) is working pretty well. I'm deploying several times a day - without any side effects. There are also other opensource appservers out there, which are robust and usable. But Glassfish is more interesting for production and so commercial use.
What's unique in Glassfish:
Human-readible/usable admin console:
Most of the administrators would like to work with more comfortable interface. Working direct with configuration files could even become dangerous in production.
Sufficient monitoring and diagnostic capabilities:
the invocation path (e.g facade, bean1, bean2) with performance. This is very usable for production and also development.
In most cases there are only politicial reasons, but they also have to be considered.
Glassfish is well documented, training is also available available.
The netbeans 6.0m1 integration is also good but not crucial for production. In the development phase you can control the appserver
from netbeans 6.0. It is also possible to "see" already deployed beans and intercept logfiles.
Also useful: the database explorer module (see: runtime settings)
Glassfish is the first, opensource application server I know, which comes with usable admin UI and good diagnostic/monitoring
capabilities. This makes glassfish also interesting for commercial projects.
What I miss is the capability for monitoring JPA-/CMP3-entities and clustering (will come with V2).
In the next time will realize some load-, stress- and robustness tests for glassfish's ejb-container. After passing, it would be in my opinion fully capable to
be used also in "mission critical" projects.