The ConnectionTrackingCoordinator now supports lazy connector
activation via the optional 'lazyActivation' GBean attribute.
Currently, the CTC tracks all connections opened in a component
instance and when the component is reentered, all previously open
connections are reconnected. The new optional mode waits to
reconnect connection until they are actually used. If the connection
is not used, then it is not connected. This is accomplished by
proxying the Connection instance. The proxy implements all
interfaces that the Connection implemented, so the proxy can still be
cast to a vendor specific connection interface (think Oracle JDBC
Connection sub-interface).
One very nice side effect of this feature is that is reduces the
burden to track open connections on a per component basis. Without
lazy activation, each component instance must track previously open
connections, so that they can be reconnected. With lazy activation,
the proxy is performing this tracking, so the component is free to
not track that information. Of course, components will still want to
demarc component entrance and exit so the Connector system can return
handles to the connection pool (for connectors that support
disassociation), but that is a much simpler task. This relaxation of
the requirements for a component integrator is very important to
OpenEJB3 as we now use JPA for CMP and will not be able to implement
all of the connector tracking rules that we were when we had complete
control over the CMP implementation. This will also make integration
with component frameworks Spring much easier since connection
tracking can be optional.
I have applied this improvement to trunk where is it on by default
and to branch/1.2 where it is not active. I have also verified that
the it does not break the tck for 1.2 in either mode.
-dain
- Connector Lazy Activation Dain Sundstrom
-