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

New versions of Leiningen and Boot plugins

This announcement only pertains to those who deploy their applications to WildFly or EAP.

We just released version 2.0.1 of lein-immutant and version 0.4.0 of boot-immutant. Both releases fix an issue where "dev" wars were no longer deployable if they used Immutant 2.1.0.

lein-immutant and boot-immutant are plugins, for Leiningen and Boot respectively, that are required for your application to run on WildFly or EAP. Specifically, they provide tasks for packaging your app as a WAR file and testing it "inside" the container.

If you have any questions, issues, or other feedback, you can always find us on #immutant on freenode or our mailing list or you can file an issue on the appropriate project.

Using Datomic With Immutant Redux

A month ago, we covered how to use Datomic with Immutant. Now that Immutant 2.1.0 has been released, the process of using Immutant messaging and Datomic in the same application is a bit simpler, so we're covering just that here.

With Immutant 2.1.0, org.immutant/messaging can now work with the HornetQ 2.3.x brought in by Datomic, you just have to have the proper dependency inclusions/exclusions for it to work. The minimum to get this working is:

:dependencies [[org.immutant/immutant "2.1.0"]
               ;; Datomic transitively brings in HornetQ 2.3.17.Final, which
               ;; overrides the HornetQ 2.4.5.Final from org.immutant/messaging
               [com.datomic/datomic-pro "0.9.5206"]
               ;; org.immutant/messaging requires this, but Datomic doesn't
               ;; bring it in, so we have to depend on it explicitly
               [org.hornetq/hornetq-jms-server "2.3.17.Final"
                :exclusions [org.jboss.jbossts.jts/jbossjts-jacorb]]]

But doing just that leads to lots of warnings in Leiningen's pedantic report. Both Datomic and Immutant have large dependency trees, so conflicts are inevitable. If you want to get rid of those warnings, we've figured that out for you as well:

:dependencies [[org.immutant/immutant "2.1.0"
                :exclusions [org.hornetq/hornetq-server
                             org.hornetq/hornetq-jms-server
                             org.hornetq/hornetq-journal
                             org.hornetq/hornetq-commons]]
               [com.datomic/datomic-pro "0.9.5206"
                :exclusions [org.slf4j/slf4j-nop
                             joda-time
                             commons-codec
                             org.jboss.logging/jboss-logging]]
               [org.hornetq/hornetq-jms-server "2.3.17.Final"
                :exclusions [org.jboss.spec.javax.transaction/jboss-transaction-api_1.1_spec
                             org.jboss.logging/jboss-logging
                             org.jboss/jboss-transaction-spi
                             org.jgroups/jgroups
                             org.jboss.jbossts.jts/jbossjts-jacorb]]]

Get In Touch

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

Mailing List Moved To Google Groups

Due to issues with hosting our own mailing lists, we've decided to let someone else manage them so we can spend more time doing things that actually matter. Therefore, effective today, immutant-user@immutant.org is now immutant@groups.google.com, and we're retiring immutant-dev@immutant.org, since it was rarely used.

If you were subscribed to immutant-user@immutant.org, you should have received an invite to join the new list already. If you didn't receive it, or weren't on the old list, please join.

The archives of the old lists will continue to be available at http://immutant.markmail.org/.

Why Google Groups?

We wanted something that was simple to manage (or at least simpler than our existing, broken, ezmlm/qmail setup). We also had requests from a few of you for something more forum-like, that didn't require email. Google Groups gives us both of those.