public void registerMultiUserChatService(@Nonnull final MultiUserChatService service, final boolean allNodes) {
        Log.debug("Registering MUC service '{}'", service.getServiceName());
        try {
            ComponentManagerFactory.getComponentManager().addComponent(service.getServiceName(), service);
            mucServices.put(service.getServiceName(), service);
        }
        catch (ComponentException e) {
            Log.error("Unable to register MUC service '{}' as a component.", service.getServiceName(), e);
        }
        if (allNodes) {
            Log.trace("Sending 'service added' event for MUC service '{}' to all other cluster nodes.", service.getServiceName());
            CacheFactory.doClusterTask(new ServiceAddedEvent(service.getServiceName(), service.getDescription(), service.isHidden()));
        }
    }
Registers a new MultiUserChatService implementation to the manager.

This is typically used if you have a custom MUC implementation that you want to register with the manager. In
other words, it may not be database stored and may follow special rules, implementing MultiUserChatService.
It is also used internally to register services from the database.

Triggers the service to start up.

This method has a boolean parameter that controls whether a 'new service added' event is to be sent to all other
cluster nodes. This generally is desirable when a new service is being created. A reason to _not_ send such an
event is when this method is being invoked as a result of receiving/processing such an event that was received
from another cluster node, or when initializing this instance from database content (which will occur on all
cluster nodes).

@param service The MultiUserChatService to be registered.
@param allNodes true if a 'service added' event needs to be sent to other cluster nodes.
@see #createMultiUserChatService(String, String, boolean)
xmppserver/src/main/java/org/jivesoftware/openfire/muc/MultiUserChatManager.java