We're as happy as June bugs in July to announce our third bi-monthly beta release of Immutant - version 0.5.0, hopefully culminating in a 1.0.0 version this fall. As always, view our road map here.

What is Immutant?

Immutant is an application server for Clojure. It's an integrated platform built on JBoss AS7 that aims to reduce the inherent incidental complexity in real world applications.

What's in this release?

Most of the effort in this release has been bug fixes and internal refactoring. But it hasn't all been fun and games, we also have added a few new features:

  • We now expose MBeans for scheduled jobs, allowing you some control over them via JMX.
  • Speaking of jobs - you can now access the scheduler for your application via immutant.jobs/internal-scheduler. This is useful if you want to use an alternate Quartz-based scheduling library (quartzite, for example).
  • You can now control the locking mode for caches.
  • The immutant.dev namespace can now be used with Clojure 1.3 applications.
  • The leiningen project for your application is now available via: (immutant.registry/fetch :project)

During this cycle, we've also made a few improvements to the lein-immutant plugin, most notably the ability to run tests for a project within an Immutant.

Get It

The simplest way to install or upgrade to 0.5.0 is via our Leiningen plugin:

$ lein immutant install 0.5.0

See our install page for more details. Once you have it installed, take a look at our tutorials.

Get In Touch

If you have any questions, issues, or other feedback about Immutant, you can always find us on #immutant on freenode or our mailing lists.

Issues resolved in 0.5.0

  • [IMMUTANT-34] - Expose mbeans for jobs
  • [IMMUTANT-124] - remove logged messages when using immutant namespaces outside of the container
  • [IMMUTANT-125] - Update deployment docs to describe new args
  • [IMMUTANT-127] - Locally install public jars from assembly/clojars dir
  • [IMMUTANT-128] - Expose optimistic/pessimistic locking modes for immutant-cache
  • [IMMUTANT-129] - Must be able to stop JMS destinations with corrupt messages
  • [IMMUTANT-130] - immutant.web.session doesn't delete session when set :session to nil in the ring response
  • [IMMUTANT-131] - Make the project.clj map available from the registry
  • [IMMUTANT-133] - Dynamically add source paths to the classpath via dev ns
  • [IMMUTANT-134] - Add a new task to the plugin for running in-container tests
  • [IMMUTANT-136] - Expose internal Quartz scheduler for use with external libs like Quartzite
  • [IMMUTANT-140] - Need ability to re-daemonize a daemon by the same name
  • [IMMUTANT-142] - Use servlets instead of servlet filters
  • [IMMUTANT-143] - dev ns shouldn't be calling bootstrap directly
  • [IMMUTANT-144] - Error occurs when deploying two apps that both depend on io.netty/netty
  • [IMMUTANT-145] - context path should be "" for the root context