I have been doing a lot of customer work lately using Java EE 6 and Glassfish. Fairly nice development environment even if Java EE 6 is heavy on ceremony (but better than J2EE).
Just for fun today I took small play apps I had written in Rails and Clojure + Compojure and shoe-horned them to run on Glassfish. Interesting exercise, but unless there is an overwhelming need to create a custom deployment setup, it is so much better to go with the flow and stick with well crafted and mature setups like
- Java and Java EE 6
- Clojure + Compojure running with embedded Jetty behind nginx for serving static assets
- Rails app hosted on Heroku
- Web apps written in either Java or Python hosted on AppEngin using the supported frameworks
- etc.
I must admit that I enjoy hacking not only code but also deployment schemes – enjoy it too much sometimes. Sometimes it is worthwhile, most often not.

Clojure on AppEngine is fairly straight-forward once you get around the blacklisted classes. Luckily, appengine-magic was designed for just that.
Note: not speaking from personal experience. I used a precursor to appengine-magic and simple ‘lein compile’ with the correct config to host Compojure+Enlive on the AppEngine.
Hello Sim,
I was just mentioning a few “stable combinations” that I use; I know that Clojure has worked for some high profile projects on AppEngine and on Twitter, Charles Nutter pointed out that there are large deployments of JRuby on Glassfish.
-Mark
Do you know of a write-up on deployment to nginx/Clojure/Compojure – ideally something documenting how to build a server from scratch.
Hello MAC, I just used nginx as a proxy and and added something like “root /home/app1/www” to point to where static assets are stored. The easier alternative would be to just use this example that adds a file handler: http://en.wikibooks.org/wiki/Compojure/Tutorials_and_Tips