Resin 3.0.9 Release Notes
Resin 3.1

Documentation
Examples
Changes

Release Notes
Change Logs

Resin 3.1.2
Resin 3.1.1
Resin 3.1.0
Archive

Resin 3.0.20
Resin 3.0.19
Resin 3.0.18
Resin 3.0.17
Resin 3.0.16
Resin 3.0.15
Resin 3.0.14
Resin 3.0.13
Resin 3.0.12
Resin 3.0.11
Resin 3.0.10
Resin 3.0.9
Resin 3.0.8
Resin 3.0.7
Resin 3.0.6
Resin 3.0.5
Resin 3.0.4
Resin 3.0.3
Resin 3.0.2
Resin 3.0.1
Resin 3.0.0
Resin 3.0.10
Archive
Resin 3.0.8

Distribution/licensing changes

The Resin distribution for 3.0.9 has been refactored into two distributions:

  • Resin Professional - Most companies and organizations will use Resin Professional. Includes performance, caching, and clustering capabilities.
  • Resin Open Source (GPL) - Contains all functional components of Resin, including EJB, but excludes performance and clustering capabilities.

EJB 2.1 refactoring

The EJB implementation has been refactored to use a new underlying persistence engine (Amber). It would be wise for current CMP/EJB users to take extra care verifying Resin 3.0.9 before putting it into production.

EJB 3.0 experimental features

See the EJB 3.0 tutorials for examples.

Resin 3.0.9 includes an implementation the EJB 3.0 early-draft spec features. EJB 3.0 has a number of significant changes over EJB 2.1:

  • Uses JDK 1.5 annotations (@Entity, @Column, etc.) instead of deployment descriptors.
  • Home interfaces are no longer needed
  • Entities are beans (i.e. not pooled objects as in EJB 2.1)
  • Entities can use JDO-style field-enhancement instead of method enhancement

JDK 1.5 Transaction Annotations

Resin 3.0.9 has an experimental support for annotation-based transactions. The annotations use the EJB 3.0 markers. The enhancement is configured as part of the <class-loader> configuration.

The following code instructs Resin to enhance MyBean so a transaction is always started when businessMethod is called. The ResinEnhanced is required.

MyBean.java
package qa;

import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;

import com.caucho.java.enhancer.ResinEnhanced;

@ResinEnhanced
public class MyBean {
  ...
  @TransactionAttribute(TransactionAttributeType.REQUIRED)
  public void businessMethod(String arg1)
    throws FooException
  {
    ...
  }
}

The configuration adds the bytecode enhancer with the transaction enhancer enabled.

web.xml
<web-xml xmlns="http://caucho.com/ns/resin">
  <class-loader>

    <enhancer resin:type="com.caucho.java.enhancer.ClassEnhancer">
      <enhancer resin:type="com.caucho.transaction.enhancer.TransactionEnhancer"/>
    </enhancer>
  </class-loader>

  ..
</web-xml>

JDK 1.5 Injection Annotations

As an experimental feature, servlets can use JDK 1.5 Injection annotations.

Hessian/Burlap server headers

Hessian and Burlap services can now pick up the protocol headers using the ServiceContext.getHeader method.

package qa;

import com.caucho.services.server.GenericService;
import com.caucho.services.server.ServiceContext;

public class MyService extends GenericService {
  public Object header() {
    return ServiceContext.getContextHeader("a");
  }
}

validate-taglib-schema

Allows the taglib schema validation to be turned off. This should only be used in the case where a .tld file in a third-party jar is invalid.

Hessian/Burlap servlet options

The Hessian servlet can now specify its SerializerFactory. You can use this to avoid sending the collection type with Hessian.

web.xml
<servlet servlet-name="my-service" servlet-class="qa.MyService">
  <init>
    <serializer-factory>
      <send-collection-type>false<send-collection-type>
    </serializer-factory>
  </init>
</servlet>
web.xml
<servlet servlet-name="my-service" servlet-class="qa.MyService">
  <init>
    <send-collection-type>false<send-collection-type>
  </init>
</servlet>

Filter url-pattern with include/exclude

The filter-mapping can now accept more sophisticated matches, allowing filters to exclude URLs.

<filter-mapping filter-name="gzip">
  <url-pattern>
    <exclude-regexp>\.(pdf,mov)</exclude-regexp>
  </url-pattern>
</filter-mapping>

JSSE has alias

JSSE now has an <alias> tag to select the alias from the keystore.

JspCompiler

com.caucho.jsp.JspCompiler can now accept a -conf argument, which points to a web-app configuration.

compile-app.xml
<web-app xmlns="http://caucho.com/ns/resin">
  <document-directory>/opt/www/foo</document-directory>

  <resin:import path="/opt/resin/conf/app-default.xml"/>
</web-app>
command line
unix> java com.caucho.jsp.JspCompiler -conf /opt/resin/compile-app.xml" test/foo.jsp

jsp tld-file-set

The preloaded tlds can now be configured with the <tld-file-set> tag. By default all tlds in WEB-INF are loaded. In some cases where the WEB-INF contains many files, this is inappropriate.

web-xml
<web-app xmlns="http://caucho.com/ns/resin">
  <jsp>
    <tld-file-set dir="WEB-INF">
      <include name="tld/**/*.tld"/>
    </tld-file-set>
  </jsp>
</web-app>

Resin 3.0.10
Archive
Resin 3.0.8
Copyright © 1998-2006 Caucho Technology, Inc. All rights reserved.
Resin ® is a registered trademark, and Quercustm, Ambertm, and Hessiantm are trademarks of Caucho Technology.