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

<body>

<summary objsummary='localtoc'/>

<section title="session enhancements">

<section 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>after-request
<li>on-shutdown.
</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>

</section>

</section>

<section 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> tag's "level" attribute sets
the level of the logging Handler.  It does not set the level of
the Logger.</p>

<section title="&lt;logging>">

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

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

Is equivalent to:

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

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

</section>

</section>

<section title="Admin enhancements">

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

</section>

<section title="Load Balancing enhancements">

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

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

</section>

<section title="client-weight">

<p>The backend &lt;srun> 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">
  &lt;srun id="app-a" client-weight="200" host="192.168.0.10"/>
  &lt;srun id="app-b" host="192.168.0.10"/>

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

</section>

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

<p>The backend &lt;srun> 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">
  &lt;client-warmup-time>60s&lt;/client-warmup-time>

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

</section>

<section 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>

</section>

<section 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>

</section>

</section>

<section title="Hessian">

<section title="Hessian 2.0 Draft">

<p>An early draft of <a href="../protocols/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>

</section>

<section title="Enum">

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

</section>

</section>

<section title="Quercus">

<p><a href="../quercus">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>

<section 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>

</section>

<section 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><a href="../quercus/tutorial/json/index.xtp">JSON</a></li>
</ul>
</section>

<section title="server-env">

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

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

</section>

</section>

</body>
</document>
