<document>
  <header>
    <product>resin</product>
    <title>Resin 3.0.2 Beta Release Notes</title>
  </header>

<body>

<summary objsummary="localtoc"/>

<s1 title="Overview">

<p>Resin 3.0.2-beta is the final beta release of Resin 3.0.x.
It is now feature-complete.  Any bug you find in 3.0.2 is a real bug
and should be reported in the
<a href="http://www.caucho.com/quercus/bugtrack">bugtrack</a>.</p>

<p>Because of the large number of changes, developers should stress
test their application with Resin 3.0.2 thoroughly before deploying
it.</p>

<p>The planned version naming scheme has changed back, so 3.0.3 is
the first expected non-beta release.</p>

</s1>

<s1 title="Apache/IIS Plugins">

<p>Configuration for the web server plugins now uses a
<var>ResinConfigServer</var> configuration, replacing the
old CauchoConfigFile.  CauchoConfigFile is no longer valid.</p>

<p>The plugins query a backend Resin configuration server
for the configuration.  The backend configuration server could
be a different Resin instance from the production servers
(although normally will be the same server) and can be clustered.</p>

<p>The ResinConfigServer is in the httpd.conf for Apache or resin.ini
in the inetpub/scripts directory for IIS.</p>

<example>
ResinConfigServer localhost 6802
</example>

</s1>

<s1 title="Configuration Changes">

<p>Configuration for most resources has change to make them consistent.
All resources use "jndi-name" to specify the JNDI name and "type" to
specify the class (or type) of the resource.</p>

<example title="Generic Bean resource example">
&lt;resource jndi-name="test/foo" type="test.Bean"&gt;
  &lt;init&gt;
    &lt;value&gt;${1 + 3}&lt;/value&gt;
  &lt;/init&gt;
&lt;/resource&gt;
</example>

</s1>

<s1 title="Database Changes">

<p>The database configuration has been cleaned up.  Configuration tags for the
driver itself is now distinct from configuration for the pool.</p>

<example title="Database configuration">
&lt;database jndi-name="jdbc/test"&gt;
  &lt;driver type="org.gjt.mm.mysql.Driver"&gt;
    &lt;url&gt;jdbc:mysql://localhost:3306/test&lt;/url&gt;
    &lt;user&gt;&lt;/user&gt;
    &lt;password&gt;&lt;/password&gt;
  &lt;/driver&gt;
  &lt;max-connections&gt;20&lt;/max-connections&gt;
  &lt;max-idle-time&gt;30s&lt;/max-idle-time&gt;
&lt;/database&gt;
</example>

<p>In addition, the &lt;ping&gt; tag now replaces &lt;ping-on-idle&gt;,
&lt;ping-on-free&gt; and &lt;ping-on-reuse&gt;.  In all cases, the ping
occurs when the connection is reused.  The &lt;ping-interval&gt;
governs whether to ping or not.  If the connection is reused within the
&lt;ping-interval&gt;, it is not pinged.  Only older idle connections
are pinged.</p>

<s2 title="JCA">

<p>Resin's database support now uses Resin's JCA implementation for
connection pooling.  This change should not be visible to applications, but
is a major implementation change.</p>

</s2>

</s1>

<s1 title="JSP 2.0 and Servlet 2.4 drafts">

<p>Resin 3.0.2 implements the current (3rd) drafts for both
Servlet 2.4 and JSP 2.0.</p>

</s1>

<s1 title="JMX 1.1">

<p>Resin 3.0.2 now supports JMX 1.1.  The
<a href="examples|jmx.xtp">JMX tutorials</a> give a good overview.</p>

<p>Configuration with JMX uses the &lt;resource&gt; tag, like any other
resource.  Registering a resource with JMX simply involves adding an
&lt;mbean-name&gt; tag (and implementing an *MBean.java interface.)</p>

<p>Resources can register as JMX listeners with the &lt;listener&gt; tag.</p>

<example title="Resource added as MBean listener">
&lt;web-app xmlns="http://caucho.com/ns/resin"&gt;
  &lt;resource mbean-name="example:name=emitter"
            type="example.Emitter"&gt;
  &lt;/resource&gt;

  &lt;resource mbean-name="example:name=listener"
            type="example.Listener"&gt;
    &lt;listener mbean-name="example:name=emitter" handback="tutorial"/&gt;
  &lt;/resource&gt;
&lt;/web-app&gt;
</example>

</s1>

<s1 title="Admin">

<p>The ResinStatusServlet has been reimplemented as
com.caucho.servlets.ResinStatusServlet.</p>

</s1>

</body>
</document>