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

<body>

<summary objsummary='localtoc'/>

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

</section>

<section title="Apache/IIS Plugins">

<p>Configuration for the web server plugins now uses a
<var/ResinConfigServer/> 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>

</section>

<section 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">
  &lt;init>
    &lt;value>${1 + 3}&lt;/value>
  &lt;/init>
&lt;/resource>
</example>

</section>

<section 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">
  &lt;driver type="org.gjt.mm.mysql.Driver">
    &lt;url>jdbc:mysql://localhost:3306/test&lt;/url>
    &lt;user>&lt;/user>
    &lt;password>&lt;/password>
  &lt;/driver>
  &lt;max-connections>20&lt;/max-connections>
  &lt;max-idle-time>30s&lt;/max-idle-time>
&lt;/database>
</example>

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

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

</section>

</section>

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

</section>

<section title="JMX 1.1">

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

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

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

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

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

</section>

<section title="Admin">

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

</section>

</body>
</document>
