<document>

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

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.

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

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

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

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

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.

<servlet-mapping url-pattern="/config"> <servlet-class>com.caucho.vfs.remote.RemoteFilesystemServlet</servlet-class> <init> <root>${resin.rootDir}</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.

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

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

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

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

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

Individual load balancer clients can now be disabled through JMX.

Given the following cluster

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

The name of a cluster client is:

<example> 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()`.

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.

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

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

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

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.

Added archive-path to web-app.

Added regexp support for host aliases.

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.

<example> <resource type="com.caucho.jms.resource.ListenerResource"> <init> <connection-factory>\${jmsFactory}</connection-factory> <destination>\${queue}</destination> <listener type="example.MyListener"/> </init> </resource>

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

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

New configuration EL variables:

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

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

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.

</document>