Library upgrades in Mule ESB 3.6

Reading Time: 6 minutes

If you have read the Mule ESB 3.6 release notes then you already know what I’m about to say, but just to recap, here we go…

A lot of effort was put in 3.6 to upgrade our libraries stack. Even though we try to stay innovative, it doesn’t make sense to reinvent the wheel all the time, so we use a lot of third-party libraries. However, keeping those up-to-date while maintaining our strict backwards compatibility policy is something that’s really difficult to do. As a result, we haven’t always managed to keep up.

For 3.6, we decided it was time to catch up! So, here’s a comprehensive list of the upgrades on our libraries stack, and some tips on how to handle migration.

Jersey

Jersey was upgraded from version 1.6 to 2.11, which implements jax-rs 2.0. Applications using the jersey module will need upgrading. For further reference see Jersey’s migration guide visiting this link.

Groovy

Groovy was upgraded to version 2.3.7-indy. If this produces any compatibility issues with an existing script you should either update your script (recommended) or go back to a prior version by replacing the groovy jar at MULE_HOME/lib/opt

Jython

Jython 2.7.3b3 is now part of the distribution. You no longer need to install the scripting pack or include it on your app. If this produces any compatibility issues with an existing script you should either update your application/installation (recommended) or replace/delete the jython jar at MULE_HOME/lib/opt

Javascript Support

Rhino 1.7R4 is now part of the distribution. You no longer need to install the scripting pack or include it on your app. If this produces any compatibility issues with an existing script you should either update your application/installation (recommended) or replace/delete the rhino and js-engine jars at MULE_HOME/lib/opt

Apache Commons

Apache commons libraries were upgraded as follows:

  • commons-beanutils: from version 1.8.0 to 1.9.2
  • commons-codec: from version 1.3 to 1.9
  • commons-exec: from version 1.1 to 1.2
  • commons-net: from version 2.0 to 2.2

JSON Validation

The dependency org.kitchen-eel:json-schema-validator was removed and replaced with com.github.fge:json-schema-validator:2.2.5. If you still need to use that dependency, you can safely add it back to your application/runtime.

Kryo (EE users only)

Kryo was upgraded from version 2.22 to 3.0.0 (shaded). kryo-serializers was also upgraded from version 0.26 to 0.27.

Java annotations API

javax.annotation:javax.annotation-api was upgraded to version 1.2. We’re now importing this dependency directly while before we did it through the geronimo-specs project.

No longer in the distribution

The following dependencies were removed from the distribution since they’re no longer necessary:

  • geronimo-j2ee-management_1.0_spec-1.1.jar
  • jaxb-api-2.1.jar
  • jaxws-api-2.2.1.jar
  • jsr250-api-1.0.jar
  • jsr181-api-1.0-MR1.jar
  • saaj-api-1.3.jar
  • saaj-impl-1.3.jar

Other minor upgrades

  • Guava has been upgraded to version 18.0
  • xmlunit has been upgraded to version 1.5
  • jackson-databind: from version 2.1.1 to 2.4.3
  • joda-time: from version 1.6 to 2.5
  • saxon: from version 9.1.0.8 to 9.6.0.1-HE
  • woodstox-core-asl: from version 4.1.4 to 4.4.1
  • stax2-api: from version 3.1.1 to 3.1.4
  • XStream was upgraded from version 1.4.2 to 1.4.7

That’s all, folks

That’s it. Hope this quick guide is useful. For a more conprehensive description please visit the 3.6 Release notes ».

Thanks for reading!