Apache Tomcat 7.0.6 released - the first stable Tomact 7 release
The Apache Tomcat team is pleased to announce the release of Apache Tomcat 7.0.6, the first stable release in the Tomcat 7 series.
Apache Tomcat 7.0.6 contains further performance improvements in session management, a new binary distribution targeted at users embedding Tomcat in other applications and several enhancements to the memory leak detection and prevention features. The Tomcat 7.0.6 release also contains around 60 bug fixes compared to 7.0.5.
Tomcat 7 trunk and JMX
You may have seen that the Tomcat project participated in the Google Summer of Code (GSOC) this year. This year, Chamith Buddhika has been working on improving the JMX support. In particular the aims were:
- Aligning the attributes and methods exposed via JMX with reality. The JMX descriptions and the actual code had diverged over time and there were many missing entries as well as entries that no longer worked.
- Making it possible to fully configure a Tomcat instance over JMX.
It is this second objective that I am writing about today. With the most recent changes to Tomcat 7 trunk (you'll need to build from svn or wait until 7.0.3 to use these features) it is now possible to start an absolute bare minimum Tomcat instance and perform all the configuration via JMX.
To try this out for yourself, you'll need to start with a standard Tomcat install (if building from trunk the contents of output/build will be fine) and reduce server.xml to the bare minimum. Something like this:
<?xml version='1.0' encoding='utf-8'?> <Server port="8005" shutdown="SHUTDOWN"> </Server>Then start Tomcat along with JConsole and connect JConsole to your newly started Tomcat instance. In the MBean tab in JConsole, you should see a number of Tomcat MBeans including one named "Catalina:type=MBeanFactory". Navigate to this MBean and use the "createStandardServiceEngine" method to create a Service and an Engine. There is a one-to-one mapping between Service and Engine so they are created together. For domain and defaultHost I use the standard values "Catalina" and "localhost" respectively. You can change these if you wish. baseDir must be the full path to CATALINA_BASE.
The next step is to add a Host to the Engine, configure the Host and start it. To add the Host, navigate to the Engine you just created and use the addChild operation. The type should be "org.apache.catalina.core.StandardHost" and the name must match the name you used for the defaultHost attribute when creating the Engine. The default configuration for the Host should allow you to start it, so navigate to the new Host element and use the start operation. You should see all the Contexts found in webapps being automatically deployed.
Finally, you need to add a Connector so you can test your configuration. Navigate to the Service element you created earlier and select the addConnector operation. If you don't specify an address, the Connector will listen on all IP addresses assigned to the machine where Tomcat is running. You must specify a port (I used the standard value of 8080) and you'll want to set isAjp and isSSL to false.
With this complete, you should be able to point your browser at localhost:8080 and see the standard Tomcat ROOT application.
The main purpose of improving the JMX features was to allow management tools better visibility and control over Tomcat instances. For example, a management tool could keep track of the current required configuration and dynamically configure the Tomcat instance via JMX both while the instance is running and when the instance is restarted. This would allow a management tool to have full control over a Tomcat instance's configuration without having to keep the management tool's view of the Tomcat configuration and the instance's server.xml file in sync.
The JMX improvements are still a work in progress. There are still a number of operations and attributes that don't work correctly. As always patches to improve the situation are very welcome. If you'd like to get involved in this effort - or any other aspect of Tomcat development - please subscribe to the Tomcat dev list and drop the developer community a note.
Apache Tomcat 7 released
The Apache Tomcat project is pleased to announce the first release of Apache Tomcat 7. Tomcat 7 implements the Servlet 3.0, JSP 2.2 and EL 2.2 specifications. The updated specifications add a number of new features including:
- asynchronous processing
- web-fragment support
- annotation based configuration
- programmatic configuration
- increased control of session tracking
- httpOnly support for cookies
- file upload support
- programmatic login
- additional options for JSP property groups
- support for method invocation in expression language
In addition to the updated specifications, the new and improved Tomcat 7 features include:
- memory leak prevention and detection
- protection against session fixation attacks
- a simple filter to add cross-site request forgery protection to an application
- simplified embedding of Tomcat in other applications
- support for mapping external folders into web application context (aliases)
- better security for the Manager and Host Manager applications
- all connector implementations now use Executors to provide the thread pool
- the internal component life-cycle management and MBean registration have been refactored
- making the features of a number of the valves from Tomcat 6 available as Filters
- lots of internal code clean-up
Tomcat 7.0.0 is a beta release. Information on the known issues in this release can be found in the changelog for 7.0.1 and in the open bugs and enhancements for Tomcat 7.
Some configuration changes may be required to move from Tomcat 6 to Tomcat 7. The full details can be found in the migration guide.