<document>
  <header>
    <product>resin</product>
    <title>Resin 3.1.3 Release Notes</title>
  </header>

<body>

<localtoc/>

<s1 title="Resin 3.1.x">

<p>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.</p>

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

</s1>

<s1 title="Startup Time">

<p>Resin 3.1.3 has improved the startup time by enhancing the .jar
processing.</p>

</s1>

<s1 title="HttpProxyServlet">

<p>Added fail-recover-time and connection load balancing for
HttpProxyServlet.</p>

</s1>

<s1 title="Hessian">

<p>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.
</p>

<p>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.</p>

<p>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.</p>

</s1>

<s1 title="Caching">

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

</s1>
<s1 title="Versioning">

<p>&lt;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.</p>

<p>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.</p>

</s1>

<s1 title="Jdbc Pooling">

<p>Added max-idle-count to limit the idle connection size (default 1024).</p>

</s1>

<s1 title="Admin">

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

</s1>

<s1 title="JSF">

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

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

</s1>

<s1 title="Comet/Streaming Servlets">

<p>Resin 3.1.3 introduces a Comet API for streaming servlet.
Application with long-lived connections implementing server-push will
use
<a href="http://caucho.com/resin-javadoc/com/caucho/servlet/comet/CometController.html">CometController</a>
and
<a href="http://caucho.com/resin-javadoc/com/caucho/servlet/comet/CometServer.html">CometServlet</a>
</p>

<p>We've also added a <a href="../examples/servlet-comet/">Comet
example</a>.</p>

</s1>

<s1 title="Config">

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

</s1>

<s1 title="Session Generation">

<p>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.</p>

<p>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.</p>

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

session = request.getSession(true);
</example>

</s1>

<s1 title="Administration">

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

</s1>

<s1 title="Amber">

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

</s1>

<s1 title="rewrite-dispatch">

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

</s1>

<s1 title="Quercus">

<p>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.</p>

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

</s1>

</body>
</document>
