# Apache TomEE 1.6.0.2 Released!

Apache TomEE is happy to announce the security related release of [Apache TomEE 1.6.0.2](http://tomee.apache.org/downloads.html) which is still based on [Apache Tomcat 7.0.53](http://tomcat.apache.org/tomcat-7.0-doc/index.html) - The principal focus of this release is to provide an update to CXF version 2.6.14, which fixes several security issues.

Complete details of the issues that have been fixed can be found at the following link:

[http://cxf.apache.org/security-advisories.html](http://cxf.apache.org/security-advisories.html)

The stability of the continuous integration (CI) build can be seen here: [http://ci.apache.org/builders/tomee-1.6.0.2-ubuntu](http://ci.apache.org/builders/tomee-1.6.0.2-ubuntu)

The Apache TomEE Release 1.6.0.2 files can be found here:

[http://tomee.apache.org/downloads.html](http://tomee.apache.org/downloads.html)

A complete [Changelog](tomee-1.6.0.2-release-notes.html) can be viewed here:

[tomee-1.6.0.2-release-notes.html](tomee-1.6.0.2-release-notes.html)
