Hi Chamikara,

I like the newly proposed interfaces. Looks more object oriented and 
extensible than the previous design.

Thanks
Sanjaya

On Wednesday 07 March 2007 05:42, Chamikara Jayalath wrote:
> Hi All,
>
> It seemed that the current ClusterManager interface will not be sufficient
> in some of the user scenarios. Based on the discussions I had with some
> people, I would like to suggest several changes to the interface.
>
> 1. Add a layer to replicate configuration changes.
>
> It seemed that sometimes it will be useful to  make the cluster aware of
> configuration changes as well (new services, policy changes etc.) When
> configuration changes happen somebody who is aware of it can call the
> respective method in any one of the Nodes of the cluster. Other nodes of
> the cluster will get this event through group communication.
>
> This is basically for a environment where hot-deployment or hot-update is
> not enabled. For example think of scenario where the nodes of the cluster
> are pointing to a remote repository using the URLBasedAxisConfigurator. In
> this case the user can update the repository and inform the Nodes of the
> cluster through these newly added methods.
>
> 2. Moved the context management and configuration management methods to two
> sub interfaces of the ClusterManager.
>
> The old Context management methods were moved to an interface named
> ContextManager and the newly added Configuration management methods were
> added to a interface named ConfigurationManager. These could be obtained
> through the ClusterManager API. The new configuration manager will have
> several additional methods to apply it's changes in a transactional way.
>
> 3. Added a listener mechanism to capture to changes of the cluster.
>
> It seemed that our solution did not provide a clean way for capturing the
> incoming events. Users may need to override this part without doing changes
> to the other methods of the ClusterManager. Also some users may need to do
> their specific work in this kind of events.
>
> By adding a mechanism to register a listener in the ClusterManager we can
> give this added flexibility. We will be providing a default listener which
> will have the current receiving logic (I.e. the logic that updates the
> system once a event is received - for e.g. about a context update). There
> will be two listeners one to capture the configuration changes and the
> other to capture the context changes.
>
> Here is the proposed interface,
>
> public interface ClusterManager {
>     /**
>      * Initializes the CM. Node is joint to the cluster.
>      */
>     public void init(ConfigurationContext context);
>
>     /**
>      * To obtain the ContextManager, which has methods to manage contexts
>      */
>     public ContextManager getContextManager();
>
>     /**
>      * To obtain the ConfigurationManager, which has methods to manage
> configurations.
>      */
>     public ConfigurationManager getConfigurationManager();
> }
>
> /**
>  * API to boradcast context changes to the cluster.
>  */
> interface ContextManager {
>
>     /*
>      * Context management methods
>      */
>     public void addContext(AbstractContext context);
>     public void removeContext(AbstractContext context);
>     public void updateState(AbstractContext context);
>     public boolean isContextClusterable(AbstractContext context);
>
>     /**
>      * For registering a context event listener.
>      */
>     public void addContextManagerListener(ContextManagerListener listener);
> }
>
> /**
>  * API to boradcast configuration changes to the cluster.
>  */
> interface ConfigurationManager {
>
>     /*
>      * Configuration management methods
>      */
>     void loadServiceGroup(String serviceGroupName);
>     void unloadServiceGroup(String serviceGroupName);
>     void applyPolicy(String serviceGroupName, Policy policy);
>     void reloadConfiguration();
>
>     /*
>      * Transaction management methods
>      */
>     void prepare();
>     void rollback();
>     void commit();
>
>     /**
>      * For registering a configuration event listener.
>      */
>     void addConfigurationManagerListener(ConfigurationManagerListener
> listener);
> }
>
> /**
>  * To listen to context event broadcasts from the cluster
>  */
> interface ContextManagerListener{
>     public void contextAdded(ContextEvent event);
>     public void contextRemoved(ContextEvent event);
>     public void contextUpdated(ContextEvent event);
> }
>
> /**
>  * To listen to configuration event broadcasts from the cluster
>  */
> interface ConfigurationManagerListener{
>     public void serviceGroupLoaded(ConfigurationEvent event);
>     public void serviceGroupUnloaded(ConfigurationEvent event);
>     public void policyApplied(ConfigurationEvent event);
>     public void configurationReloaded (ConfigurationEvent event);
>     public void propareCalled (ConfigurationEvent event);
>     public void rollbackCalled (ConfigurationEvent event);
>     public void commitCalled (ConfigurationEvent event);
> }
>
>
> Please send your comments...
>
> Thanks,
> Chamikara


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

Reply via email to