Immutant 2.1.5 Release

We just released Immutant 2.1.5. This release includes the following changes:

  • Support for deployment to the newly-released JBoss EAP 7
  • A fix to allow you to use XA, immutant.messaging/listen, and a remote context together
  • We no longer transitively depend on two different versions of jboss-logging
  • Our Undertow dependency has been updated to 1.3.23.Final (from 1.3.0.Beta9) to fix issues with HTTP/2 in Chrome (IMMUTANT-621)
  • Other updates to our transitive depenencies, including:
    • java.classpath 0.2.2 -> 0.2.3
    • potemkin 0.4.1 -> 0.4.3
    • tools.nrepl 0.2.7 -> 0.2.11

We're especially proud to announce full support for EAP7 on the day of its official release, expanding our supported deployment options to the following:

  • Standalone
  • JBoss EAP 6.4 and 7.0
  • WildFly 8, 9, and 10
  • Clojure 1.7, 1.8, and 1.9

Our comprehensive, automated integration test suite verifies all of these whenever a change to Immutant is committed.

What is Immutant?

Immutant is an integrated suite of Clojure libraries backed by Undertow for web, HornetQ for messaging, Infinispan for caching, Quartz for scheduling, and Narayana for transactions. Applications built with Immutant can optionally be deployed to a WildFly or JBoss EAP cluster for enhanced features. Its fundamental goal is to reduce the inherent incidental complexity in real world applications.

Get In Touch

As always, 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 2.1.5

Immutant 2.1.4 Release

We just released Immutant 2.1.4. There are just a couple of small changes in this release, only one of which is notable: you can now provide a handler deal with any errors that occur when writing the ring response. For details, see the immutant.web/run docstring and the example in IMMUTANT-615.

What is Immutant?

Immutant is an integrated suite of Clojure libraries backed by Undertow for web, HornetQ for messaging, Infinispan for caching, Quartz for scheduling, and Narayana for transactions. Applications built with Immutant can optionally be deployed to a WildFly cluster for enhanced features. Its fundamental goal is to reduce the inherent incidental complexity in real world applications.

Get In Touch

As always, 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 2.1.4

  • [IMMUTANT-613] - Add boot-immutant to WildFly guide
  • [IMMUTANT-614] - Using a dev war prints out a deprecation warning for app-relative
  • [IMMUTANT-615] - User can't catch errors that occur when writing the ring response
  • [IMMUTANT-616] - Allow adding extensions to undertow's WebSocket handshake handler

Immutant 2.1.3 Release

We just released Immutant 2.1.3. Most issues addressed in this release are minor bug fixes and documentation enhancements.

One not-so-minor bug was discovering that our :dispatch? false option has been broken since 2.1.0. That's fixed now, and should help to improve compute-bound benchmark results.

One other minor change worth noting is the addition of two functions to the immutant.web.undertow namespace: http-handler, which turns a Ring handler into an Undertow HttpHandler, and graceful-shutdown, which invokes Undertow's ability to gracefully shutdown a web server by prohibiting new requests while pending ones complete. See IMMUTANT-605 for a simple example.

We also had a couple of community contributions in this release: Dave Della Costa fixed our issue with decoded :path-info, and Matthias Nehlsen fixed some documentation issues with our web namespace. Thanks guys!

What is Immutant?

Immutant is an integrated suite of Clojure libraries backed by Undertow for web, HornetQ for messaging, Infinispan for caching, Quartz for scheduling, and Narayana for transactions. Applications built with Immutant can optionally be deployed to a WildFly cluster for enhanced features. Its fundamental goal is to reduce the inherent incidental complexity in real world applications.

Get In Touch

As always, 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 2.1.3

  • [IMMUTANT-599] - An async call in WildFly can result in a TimeoutException that permanently breaks an app
  • [IMMUTANT-600] - Deploying a servlet to EAP fails if websockets isn't activated
  • [IMMUTANT-601] - Document that a queue shouldn't be shared between 'listen and 'respond
  • [IMMUTANT-604] - Using web/run :filter-map option causes ClassCastException
  • [IMMUTANT-605] - Graceful Shutdown of Web Server
  • [IMMUTANT-606] - deprecate util/app-root and util/app-relative
  • [IMMUTANT-607] - Caching tests fail under WildFly 10.0.0.Final
  • [IMMUTANT-609] - document org.immutant/wildfly dependency in installation & wildfly guides
  • [IMMUTANT-610] - provide a non-decoded :path-info to ring
  • [IMMUTANT-611] - Impossible to run handlers on IO thread (:dispatch? false)
  • [IMMUTANT-612] - Passing undertow options to web/run can result in wrong :port in result

Immutant 2.1.2 Release

We just released Immutant 2.1.2. The only significant change is an option to more easily enable HTTP/2.0 in immutant/web. We've had a few people ask about it and got tired of telling them to use an incremental release while we waited to fix enough bugs to justify an "official" release.

But there simply aren't any bugs to fix. ;)

We updated our Feature Demo with an HTTP/2.0 example using a self-signed certificate since, as you may know, HTTP/2.0 requires SSL.

(Configuring SSL in Java is still terrible, by the way. This release doesn't address that.)

What is Immutant?

Immutant is an integrated suite of Clojure libraries backed by Undertow for web, HornetQ for messaging, Infinispan for caching, Quartz for scheduling, and Narayana for transactions. Applications built with Immutant can optionally be deployed to a WildFly cluster for enhanced features. Its fundamental goal is to reduce the inherent incidental complexity in real world applications.

Get In Touch

As always, 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 2.1.2

  • [IMMUTANT-597] - Destination names segmented with / can shadow each other Inside the container
  • [IMMUTANT-596] - Messaging docs are incorrect wrt specifying destinations in standalone.xml
  • [IMMUTANT-595] - HTTP2 setup problems

Immutant 2.1.1 Release

We just released Immutant 2.1.1! This is mostly a bugfix/documentation release. Specific issues are listed below.

What is Immutant?

Immutant is an integrated suite of Clojure libraries backed by Undertow for web, HornetQ for messaging, Infinispan for caching, Quartz for scheduling, and Narayana for transactions. Applications built with Immutant can optionally be deployed to a WildFly cluster for enhanced features. Its fundamental goal is to reduce the inherent incidental complexity in real world applications.

lein-immutant/boot-immutant Releases

We've also released new versions of lein-immutant and boot-immutant (2.1.0 and 0.5.0, respectively). You'll need to update the appropriate plugin if you use Immutant with WildFly - we rearranged some of our upstream dependencies in 2.1.1 that are used in-container, and the new plugins recognize that structure.

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 2.1.1

  • [IMMUTANT-576] - WebSockets can't be used from a user-provided servlet
  • [IMMUTANT-578] - Singleton daemons don't get started on another node if the thread dies
  • [IMMUTANT-579] - Luminus now has :main
  • [IMMUTANT-580] - Support for setting HTTP response headers in the WebSocket handshake
  • [IMMUTANT-581] - Pedestal servlet handler overrides handlers specified using :path
  • [IMMUTANT-583] - Registered closeables aren't closed when a destination is stopped (regression from 2.0.0)
  • [IMMUTANT-585] - Fix infinispan section in EAP guide
  • [IMMUTANT-586] - Expose :filter-map option to web/run for deploying Servlet Filters
  • [IMMUTANT-587] - Immutant seems to be sending "" for query string when it should be sending nil
  • [IMMUTANT-588] - Improve docs for listen to explain the explicit transaction
  • [IMMUTANT-589] - Only reuse the context given to request for the response listener if it is remote
  • [IMMUTANT-590] - Implement all methods on reified JDBC interfaces we return from our factory
  • [IMMUTANT-591] - Immutant doesn't work with clojure 1.8.0-beta2
  • [IMMUTANT-592] - Don't fail a WildFly deployment if the repl fails to start
  • [IMMUTANT-593] - See if we need to use the default listener concurrency for response listeners
  • [IMMUTANT-594] - scheduling docs point to caching/stop instead of scheduling/stop