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

<body>

<localtoc/>

<s1 title="session enhancements">

<s2 title="save-mode">

<p>The session-config now has a save-mode attribute, specifying when
Resin should save changes.  The possible values are:</p>

<ul>
<li>before-headers
</li><li>after-request
</li><li>on-shutdown.
</li></ul>

<p>The default is "after-request", which is the current Resin behavior.
Sites which have distribted sessions, but do not have a sticky-session
load balancer may need to use "before-headers".  "before-headers" does
add a latency penalty.</p>

</s2>

</s1>

<s1 title="java.util.logging fixes">

<p>The operation of the java.util.logging has changed to properly
implement/configure the java.util.logging API.</p>

<p>For clarification, the &lt;log&gt; tag's "level" attribute sets
the level of the logging Handler.  It does not set the level of
the Logger.</p>

<s2 title="&lt;logging&gt;">

<p>The new &lt;logging&gt; tag configures the Logger, e.g.</p>

<example>
&lt;logger name="com.caucho" level="fine"/&gt;
</example>

<p>
Is equivalent to:
</p>

<example>
Logger.getLogger("com.caucho").setLevel(Level.FINE);
</example>

<p>If no &lt;logger&gt; is supplied, the level default to the parent.
If no parent has a &lt;logger&gt;, the level defaults to INFO.</p>

</s2>

</s1>

<s1 title="Admin enhancements">

<p>Some MBeans have been reworked and extended:</p>
<ul>
<li>ClusterClientMBean (resin:type=ClusterClient,name=app-a)
</li></ul>

</s1>

<s1 title="Load Balancing enhancements">

<s2 title="client-connect-timeout">

<p>Sets the time a client should wait for a connection to a backend server.
Defaults to 5s.</p>

</s2>

<s2 title="client-weight">

<p>The backend &lt;srun&gt; servers can now have a client-weight, so
the load balancer can distribute more or less load to more or
less powerful servers.</p>

<p>The default value is 100.</p>

<example>
&lt;cluster id="app-tier"&gt;
  &lt;srun id="app-a" client-weight="200" host="192.168.0.10"/&gt;
  &lt;srun id="app-b" host="192.168.0.10"/&gt;

  &lt;srun id="app-test" client-weight="1" host="192.168.0.200"/&gt;
&lt;/cluster&gt;
</example>

</s2>

<s2 title="client-warmup-time">

<p>The backend &lt;srun&gt; servers can now have a warmup-time.
The client-warmup-time will throttle requests to the backend
server while the client "warms up".</p>

<p>The default value is 60s.</p>

<example>
&lt;cluster id="app-tier"&gt;
  &lt;client-warmup-time&gt;60s&lt;/client-warmup-time&gt;

  &lt;srun id="app-a" host="192.168.0.10"/&gt;
  &lt;srun id="app-b" host="192.168.0.11"/&gt;
&lt;/cluster&gt;
</example>

</s2>

<s2 title="client-max-idle-time">

<p>client-max-idle-time is a renaming of live-time.  It's the
maximum time the socket will stay in the idle pool for a load balancer
before it's removed.</p>

</s2>

<s2 title="client-fail-recover-time">

<p>client-max-idle-time is a renaming of dead-time.  It's the
time the load balancer will skip a dead backend server before retrying.</p>

</s2>

</s1>

<s1 title="Hessian">

<s2 title="Hessian 2.0 Draft">

<p>An early draft of <a href="../doc/hessian-2.0-spec.xtp">Hessian
2.0</a> protocol is available.</p>

<p>Hessian 2.0 provides a number of compact bytecodes to reduce the
size of serialized messages.  Hessian 1.0 clients will continue to
work with Hessian 2.0 servers without modification.</p>

</s2>

<s2 title="Enum">

<p>Hessian will now read and write JDK 1.5 enums.</p>

</s2>

</s1>

<s1 title="Quercus">

<p><a href="../doc/quercus.xtp">Quercus</a>, Caucho's implementation of
the PHP language in Java, has continued its rapid development, adding
advanced features as well as more PHP libraries.</p>

<s2 title="Distributed Sessions">

<p>Quercus provides
<a href="http://www.caucho.com/articles/php-sessions.pdf">Distributed Sessions
for PHP</a>, with the same distributed capabilities as servlets already use.</p>

</s2>

<s2 title="New Libraries">

<p>Quercus now supports</p>

<ul>
<li><a href="http://www.php.net/manual/en/ref.apc.php">APC</a></li>
<li><a href="http://www.php.net/manual/en/ref.pgsql.php">Postgres</a></li>
<li><a href="http://www.php.net/manual/en/ref.oci8.php">Oracle OCI8</a></li>
<li><a href="http://www.php.net/manual/en/ref.image.php">Image Library</a></li>
<li>JSON</li>
</ul>
</s2>

<s2 title="server-env">

<p>The QuercusServlet now allows &lt;server-env&gt; to define environment
variables for $_SERVER.</p>

<example>
&lt;servlet servlet-name="php"
            servlet-class="com.caucho.quercus.servlet.QuercusServlet"&gt;
  &lt;init&gt;
    &lt;servlet-env foo="bar"/&gt;
  &lt;/init&gt;
&lt;/servlet&gt;
</example>

</s2>

</s1>

</body>
</document>