Resin 3.0.9 Release Notes
Resin 3.0

Features
Installation
Configuration
Web Applications
IOC/AOP
Resources
JSP
Servlets and Filters
Portlets
Databases
Admin (JMX)
CMP
EJB
Amber
EJB 3.0
Security
XML and XSLT
XTP
JMS
Performance
Protocols
Third-party
Troubleshooting/FAQ

Feature Overview
Release Notes
Change Logs
Migrate from 2.1
Benchmarks
Features FAQ

Resin 3.0.13
Resin 3.0.12
Resin 3.0.11
Archive

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

  1. Distribution/licensing changes
  2. EJB 2.1 refactoring
  3. EJB 3.0 experimental features
  4. JDK 1.5 Transaction Annotations
  5. JDK 1.5 Injection Annotations
  6. Hessian/Burlap server headers
  7. validate-taglib-schema
  8. Hessian/Burlap servlet options
  9. Filter url-pattern with include/exclude
  10. JSSE has alias
  11. JspCompiler
  12. jsp tld-file-set

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.

See the @ResinEnhanced transaction tutorial for an example.

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-2005 Caucho Technology, Inc. All rights reserved.
Resin® is a registered trademark, and HardCoretm and Quercustm are trademarks of Caucho Technology, Inc.