= Apache TomEE 1.7.2 Released!
:jbake-type: page
:jbake-status: published

The Apache TomEE community is delighted to announce the release of http://tomee.apache.org/downloads.html[Apache TomEE 1.7.2], which is based on http://tomcat.apache.org/tomcat-7.0-doc/index.html[Apache Tomcat 7.0.61], including numerous fixes and updates.

Please note that the TomEE 1.7.2 drop in WAR file will not work on Apache Tomcat 8.
If you are interested in a Tomcat 8.x version then please feel free to check out and xref:contribute.adoc[contribute to the developer branch] - We are always interested in any help from the community that we can get.

The Apache TomEE 1.7.2 release files can be downloaded from here:

xref:download-ng.adoc[http://tomee.apache.org/downloads.html]

*** Update Maven POM Files

Simply update your existing Maven JavaEE-API, OpenEJB and or TomEE pom.xml entries to point to the latest versions:

....
<dependency>
	<groupId>org.apache.openejb</groupId>
	<artifactId>javaee-api</artifactId>
	<version>6.0-6</version>
	<scope>provided</scope>
</dependency>

<dependency>
	<groupId>org.apache.openejb</groupId>
	<artifactId>openejb-core</artifactId>
	<version>4.7.2</version>
</dependency>

<dependency>
	<groupId>org.apache.openejb</groupId>
	<artifactId>tomee</artifactId>
	<version>1.7.2</version>
</dependency>
....

A complete xref:tomee-1.7.2-release-notes.adoc[Changelog] can be viewed here:

xref:tomee-1.7.2-release-notes.adoc[tomee-1.7.2-release-notes.html]

Please feel free to jump in feet first and xref:docs.adoc[get started with TomEE].
You will nearly always find someone to help you on one of our xref:support.adoc[support channels].

*** Java EE7 and Beyond

From this point on the TomEE community will be focusing most of it's efforts on TomEE 2.0.x, which will be the first TomEE Java EE 7 driven version running on Apache Tomcat 8.x.
It is more than likely that support for Java SE 6 will be dropped so that Java SE 7 features can finally be leveraged during the development process.
We will of course continue to maintain the 1.7.x branch for the foreseeable future.
