<document>
<localtoc/>

Resin 3.1.x is a development branch. New capabilities will be added along with bug fixes for future versions of the Resin 3.1.x branch.

Deployments which need a Resin version with only bug fixes should use the Resin 3.0.x branch.

Resin 3.1.3 has improved the startup time by enhancing the .jar processing.

Added fail-recover-time and connection load balancing for HttpProxyServlet.

Hessian debugging has been improved. The HessianServlet now has a debugging attribute. If true, and if the java.util.logging level is "fine", the HessianServlet will log the input and output of the servlet.

Hessian debugging has also added HessianDebugInputStream and HessianDebugOutputStream which wrap any java.io InputStream or OutputStream and print a debuggable version of the Hessian data.

Hessian has also added streaming capabilities for asynchronous comet-style applications. Each written object is enclosed in a packet which allows the receiving end to asynchronously detect the end of the object.

The file servlet now uses CRC-64 to generate the ETag for files. The new ETag improves caching in clustered environments.

<web-app-deploy> now supports a "versioning" attribute. If true, multiple .war files with version numbers will be resolved to the most recent version, e.g. the url /foo would choose webapps/foo-1.1 over webapps/foo-1.0.

After deployment, old sessions will stay with the old version for a period of time. New sessions will migrate to the new version. This will simplify application version upgrades.

Added max-idle-count to limit the idle connection size (default 1024).

Added JdbcDriverMXBean with start()/stop() to allow control of load-balanced database drivers.

Resin 3.1.3 introduces our JSF 1.2 implementation. The implementation includes fast JSP code generation. The JSP generation can be configured like:

<example> <web-app-default> <jsp fast-jsf="true"/> </web-app-default> </example>

Resin 3.1.3 introduces a Comet API for streaming servlet. Application with long-lived connections implementing server-push will use CometController and CometServlet

We've also added a Comet example.

Added keepalive-connection-time-max, limiting the total time connections can live with keepalives.

Applications can now give a hint to the SessionManager about which server should own the session. Applications which use distributed caches like EhCache can use this capability to improve locality.

The "caucho.session-server-id" attribute of the request object sets the value. It can either be a number (the index) or the server-id of the target server.

<example> request.setAttribute("caucho.session-server-id", "app-a"); session = request.getSession(true); </example>

The administration pages at /resin-admin have been updated to add clustering and database pooling capabilities.

The performance of Amber (JPA) has been improved for loads and cached queries.

<rewrite-dispatch> now allows <resin:import> in its rules. The imported file will not force a Resin restart when it's modified, making common rewrite updtes faster.

Quercus for 3.1.3 has implemented the PHP 6 unicode.semantics, which defaults to false like PHP 6. Many PHP application will now run on Quercus with no extra configuration required.

Quercus 3.1.3 has also fixed a significant number of bugs, improviding compatibility with PHP 6.

</document>