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

After the huge buzz getting version 1.7.0 off the press it is time to get back to the day to day.
As promised we are committed to providing the best for our community, and so without further a do here is TomEE 1.7.1 - This is a maintenance release that fixes some minor issues and a few tweaks (We understand it is not so minor if you are waiting for it, so thanks for your patience).
This version is still shipped upon Apache Tomcat 7.0.55.

Please note that the TomEE 1.7.1 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.1 release files can be downloaded from here:

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

*** Important Notes:

Issue https://issues.apache.org/jira/browse/TOMEE-1339[TOMEE-1339] introduced a default (but configurable) check for a static _index.html_ file when an empty JAX-RS resource URL is specified by a client.
You can use this file to return a descriptive response to the client for example.
Make sure that this optional file does not contain sensitive information when made available.
Currently it is not a JSP and it is not parsed in any way by the Servlet container - This may change in the next version.

A new property *openejb.finder.module-scoped* was added that changed default behaviour.
It is used to enable rare optional scanning outside of the current runtime scope.
For example, if a bean is declared in one application that is extended in another application or test scope then you must now explicitly enable cross scope scanning by setting *openejb.finder.module-scoped=true*

* In such cases failure to do this will invariably result in an *javax.naming.NameAlreadyBoundException*

*** 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.1</version>
</dependency>

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

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

xref:tomee-1.7.1-release-notes.adoc[tomee-1.7.1-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.
