Resin 3.0.13 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
Release Notes
Release Notes
Resin 3.0.12

  1. HessianProxyFactory.setReadTimeout(long)
  2. active-wait-time
  3. forward target in rewrite
  4. Manual web-app restart cookbook
  5. round-robin policy
  6. clustered configuration and deployment
  7. resin:type
  8. Connection configuration
  9. Load balancer cluster client control
  10. 503 failover with HmuxLoadBalanceServlet
  11. driver-type
  12. server.rootDir
  13. access-log path-format
  14. archive-path
  15. host-alias-regexp
  16. IoC configuration for JMS
  17. var for resource/bean
  18. resin EL variables
  19. Refactoring
  20. Special Thanks

HessianProxyFactory.setReadTimeout(long)

Added a setReadTimeout to the HessianProxyFactory. This capability is only supported by JDK 1.5.

active-wait-time

An active-wait-time parameter is now available for the web-app. This specifies the time Resin will wait during a restart for the new web-app. If the time expires, Resin will return a 503. The default is 15s.

forward target in rewrite

web.xml
<web-app>
  <rewrite-dispatch>
    <forward regexp='^/foo' target='/bar'/>
  </rewrite-dispatch>
</web-app>

Manual web-app restart cookbook

A Restart cookbook is available for creating an admin servlet to stop, start, or update a web-app.

round-robin policy

HmuxLoadBalanceServlet can now use a strict round-robin balance strategy.

<servlet servlet-class="com.caucho.servlets.HmuxLoadBalanceServlet">
  <init>
    <cluster>a</cluster>
    <strategy>load-balance</strategy>
  </init>
</servlet>

clustered configuration and deployment

Resin Pro can now be configured and deployed based on a master configuration server. Configuration files and .wars placed on the master will be propagated to the cluster.

The clustered files use the special "config:" scheme in the configuration file, e.g. in archive-directory. The scheme is read-only and backed up on a client-side database to provide reliability when the master is taken down.

master configuration
<servlet-mapping url-pattern="/config">
  <servlet-class>com.caucho.vfs.remote.RemoteFilesystemServlet</servlet-class>
  <init>
    <root>/usr/local/resin</root>
  </init>
</servlet-mapping>

On a config client, "config:" reads from the master. On the master or a non-clustered server, "config:" acts as a normal relative path.

webapps configuration
<web-app-deploy>
  <archive-directory>config:webapps<archive-directory>
  <expand-directory>webapps</expand-directory>
<web-app-deploy>

The config clients are started with the "-config-server" command-line argument, pointing to the configuration server.

unix> bin/httpd.sh -config-server http://config:8081/config \
                   -conf config:conf/resin.conf \
                   -server a

resin:type

resin:type is now allowed in more places in the configuration file, in particular in the openssl <password> element.

Connection configuration

The <database> configuration can now configure the created connections with <connection>. Currently the <transaction-isolation>, <read-only>, and <catalog> are configurable.

<database jndi-name="jdbc/example">
  <driver>
    ...
  </driver>
  <connection>
    <transaction-isolation>read-committed</transaction-isolation>
  </connection>
</database>

Load balancer cluster client control

Individual load balancer clients can now be disabled through JMX.

Given the following cluster

<cluster-definition id="a">
  <srun host="localhost" port="6802"/>
</cluster-definition>

The name of a cluster client is:

resin:Server=Default,
      type=ClusterClient,
      Cluster=a,
      host=localhost,
      port=6802

The MBean interface is in com.caucho.server.cluster.mbean.ClusterClientMBean. The appropriate methods are enable(), disable(), and isActive().

503 failover with HmuxLoadBalanceServlet

The 503 failover has been improved with HmuxLoadBalanceServlet.

In addition, the web-app busy/inactive reporting has changed. Now, you can disable a single backend web-app and the load balancer will failover the web-app requests to the following server.

driver-type

The <database> driver now has optional driver-type.

<database>
  <jndi-name>test</jndi-name>
  <driver type="test.jdbc.TestDriver"
          driver-type="ConnectionPoolDataSource">
    <url>jdbc:test:foo</url>
  </driver>
 </database>

server.rootDir

Added server.rootDir to the tree-loader for shared jars.

access-log path-format

The <access-log> can have a path-format attribute which specifies the path by date. Unlike the archive-path, the log is created the formatted name directly.

archive-path

Added archive-path to web-app.

host-alias-regexp

Added regexp support for host aliases.

IoC configuration for JMS

Resin now has two IoC resources for JMS, a listener and a message sender.

ListenerResource provides the capabilities of EJB message beans, without the complexity of EJB.

<resource type="com.caucho.jms.resource.ListenerResource">
  <init>
     <connection-factory>${jmsFactory}</connection-factory>

     <destination>${queue}</destination>

     <listener type="example.MyListener"/>
 </init>
</resource>

var for resource/bean

Resin's IoC configuration tag, <resource> can now accept a "var" attribute, storing the resource in EL for later use.

<resource var="child"
           type="example.MyChild">
</resource>

<resource jndi-name="bean"
           type="example.MyBean">
  <init>
    <child>${child}</child>
  </init>
</resource>

resin EL variables

New configuration EL variables:

$\{resin.home}Same as $\{resinHome}
$\{resin.rootDir}Same as $\{serverRoot}
$\{resin.resinProfessional}Same as $\{isResinProfessional}

Refactoring

The deploy and config code has been refactored. Neither change should be user-visible.

Special Thanks

Thanks to Mircea Crisan for tracking down the JdbcMessage init order issue with Postgres.

Thanks to John Didion for finding the missing Hessian deserializer cache.

Thanks to Andy Nahapetian for finding and fixing the Hessian reference serialization bug.


Release Notes
Release Notes
Resin 3.0.12
Copyright © 1998-2005 Caucho Technology, Inc. All rights reserved.
Resin® is a registered trademark, and HardCoretm and Quercustm are trademarks of Caucho Technology, Inc.