I’m very pleased to say that we’ve released Apiman 2.1.0.Final 👏. We’ve splatted a huge number of bugs and made a lot of improvements to stability, performance, and security.

Please consult the migration guide here if you are planning to upgrade from an earlier version if Apiman (especially if you’re using Elasticsearch).

Apiman now can run on any currently released version of Java (assuming the underlying platform can, of course).

You can see all of the things we’ve fixed in Apiman 2.1.0.Final, and you can download the latest overlays, etc, over on our GitHub repo.

If you prefer the Apiman website, it’s available right away on the downloads page..

As usual, there are some simple Docker quickstart images available: docker run -it -p 8080:8080 -p 8443:8443 apiman/on-wildfly:2.1.0.Final.

A lot of work has gone into this release and we’re just getting started 🏃‍♂️.

Let us know how you find Apiman 2.1.0!

Notes

Improvements to logging

If you are a developer writing any kind of code for Apiman (including Apiman plugins or components), you can now instantiate a logger in a more pain-free way than before.

Simply do:

static final IApimanLogger LOGGER = ApimanLoggerFactory.getLogger(klazz.class);

For all distros we ship, we set an appropriate system property to ensure that logging is available and set up as early as possible. But if you implement your own platform or want to override the default logger for a given platform, you can do so by altering the following system property:

apiman.logger-delegate=<name of logging delegate>

Currently the valid values are: log4j2, jboss-logging, slf4j, sout, noop).

You can create your own logger factory if you want, but I’ll save the details of how to do this for a future blog (and update the docs 🖊).

Check out the log4j2 config that ships with the Apiman Vert.x Gateway for an example logger config that uses async logging to improve log performance considerably.

Elasticsearch changes (again).

Apiman 2.0.0.Final had errors in its Manager Elasticsearch schema definition (metrics + gateway was fine). This has been fixed, but there’s no compatible way to auto-migrate, so you’ll need to export and import.

If you’re moving from older versions of Apiman (1.x), the Elasticsearch version used has been upgraded – and that in turn causes incompatibilities (this time it’s not our fault!). Some effort from an administrator is required to upgrade the cluster. Unfortunately upgrading ES clusters has become non-trivial over the years and care is required.

Check out the migration guide for all the details.

Antora-based docs

We’ve worked hard to migrate from GitBook to Antora. GitBook no longer supports Asciidoc. We appreciate their support over the years.

Support Java 11+

Apiman’s codebase now works on all currently released versions of Java. Naturally, depending which platform you’re running on, you may be limited to a particular version (e.g. Wildfly, Tomcat, etc).

Apiman Parent / BOM

We now have a new apiman-parent which allows synchronisation of dependency versions between Apiman projects. This is of particular benefit to apiman-plugins. Plugin authors can use this to harmonise versions and reduce the risk of any incompatibilities.

Maven Wrapper

We’ve added Maven Wrapper. You can use this to ensure you build using the same version of Maven that the Apiman team uses. Simply run your build with ./mvnw instead of mvn in Apiman’s top-level directory.

Tomcat is back

In the 2.0.0.Final release, Tomcat was cut as a main distro. By popular demand, it’s back and has been updated with all of the latest-and-greatest Apiman features (e.g. logging with log4j2 by default now).

Swagger/WSDL definitions now show in Apiman exports

In older Apiman releases we mistakenly did not include API definitions in Apiman export files. This meant that when you exported and imported they would vanish.

We’ve fixed this in Apiman 2.1.0.Final, but also provided a migration tool to ‘enrich’ the JSON exported by older versions with the missing data.

Refer to the migration guide to see how to do this.

Removed some unused bits

We’ve removed Hawkular and some other unused components. Nobody was using them, as far as we were able to ascertain.

UI fixes

A bunch of UI bugs have been fixed that were causing strange glitches in 2.0.0.Final. Some nice shortcut navigation sidebars have been added.

Regressions

Some contributions in 2.0.0.Final caused some issues that have now been fixed.

The most significant one was the Elasticsearch schema causing problems. Unfortunately to fix this you will need to re-import your data. Please refer to the migration guide.

Various issues in the UI that have been fixed (see above).

It was not possible to use ES Metrics and a non-ES API Manager datastore at the same time. This is no longer the case and now works as expected again (e.g. RDBMS + ES works).

Bringing dependencies up to date

Most dependencies have been brought right up to date (with the exception of the UI where this isn’t currently essential). This is important for security, performance, and stability - and enabling Apiman to run on newer versions of Java.

Lots more

A large amount of work went into this release. Check out the GitHub release notes and commit log if you’re curious.