I think it would also be nice to be able to change the order of the mailets,
and change the "criteria" for a mailet's matcher.

What about a "test" mode so that changes could be validated/tested before
being put on-line?

> -----Original Message-----
> From: Steve Brewin [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, June 25, 2003 5:12 PM
> To: James Developers List (E-mail)
> Subject: Dynamic Reconfiguration
>
>
> Noel,
>
> A few days back we touched on the desirability of being able to
> reconfigure
> James on the fly.
>
> Having given this a little thought I think there are two levels to this...
>
> 1) Tasks - They are managed by Avalon and Avalon would need to have the
> ability to manage and signal a reconfiguration events, such as start,
> suspend, resume, stop, add, remove, and modify task.
>
> 2) Transport Matchers and Mailets - They are managed by James and the
> ability can be added to James to manage and signal reconfiguration events.
> As the Mailet chain is a logical construct, the concept of starting,
> suspending, resuming or stopping an individual Mailet cannot apply as the
> logical construct would breakdown. We can add, remove and modify.
>
> So lets look at what can be done in (2) in more detail...
>
> - How would we add a Matcher/Mailet?
> Update the configuration, rebuild the mailet chain and send init() to the
> added mailet.
>
> - How would we remove a Matcher/Mailet?
> Update the configuration, rebuild the mailet chain and send
> destroy() to the
> removed mailet.
>
> - How would we modify a Matcher/Mailet?
> Update the configuration and send refresh() to the modified mailet.
>
> Only two new concepts are introduced here, an updateable configuration and
> the addition of the refresh() method to the Mailet and Matcher interfaces.
>
> Currently configurations are not updateable as
> org.apache.avalon.framework.configuration.Configuration does not
> support the
> setting of values or attributes. Ideally it should. They could
> then be made
> editable by exposing to a management interface such as JMX. At
> termination,
> a changed configuration would be written back to config.xml, ensuring
> synchronization.
>
> Adding the refresh() method to the Mailet and Matcher interfaces
> would break
> pre-existing code. GenericMailet and GenericMatcher could be fixed, but
> there is no rule that says these should be subclassed for all Mailets and
> Matchers. Better to extend the interfaces with one which adds the
> refresh()
> method and implement this in the Generic classes as a no-op.
>
> So, dynamic reconfiguration of the Transport Matchers and Mailets could be
> achieved more easily than full dynamic reconfiguration which
> requires Avalon
> support, but not without a fir amount of effort.
>
> I am not sure what the demand for dynamic reconfiguration is. Its
> great for
> developers in a code/test/fix cycle, lethal if abused in a production
> environment but sometimes a life-saver.
>
> Maybe others would wish to comment on if its worth the effort?
>
> -- Steve
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to