/*
* JBoss, Home of Professional Open Source.
* Copyright 2008, Red Hat Middleware LLC, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.ha.jndi;
import java.lang.reflect.Method;
import java.net.UnknownHostException;
import java.util.Map;
import javax.management.ObjectName;
import org.jboss.ha.framework.interfaces.HAPartition;
import org.jboss.ha.jndi.spi.DistributedTreeManager;
import org.jboss.invocation.Invocation;
import org.jboss.util.threadpool.BasicThreadPoolMBean;
/** The standard mbean management interface for the DetachedHANamingService
*
* @author Scott.Stark@jboss.org
* @version $Revision: 81001 $
*
* <p><b>Revisions:</b><br>
*/
public interface DetachedHANamingServiceMBean
extends org.jboss.system.ServiceMBean
{
/**
* Gets the name of the partition used by this service. This is a
* convenience method as the partition name is an attribute of HAPartition.
*
* @return the name of the partition
*/
String getPartitionName();
/**
* Get the underlying partition used by this service.
*
* @return the partition
*/
HAPartition getHAPartition();
/**
* Sets the underlying partition used by this service.
*
* @param clusterPartition the partition
*/
void setHAPartition(HAPartition clusterPartition);
/**
* Get the DistributedTreeManager used by this service.
*
* @return the cache
*/
DistributedTreeManager getDistributedTreeManager();
/**
* Sets the DistributedTreeManager used by this service.
*
* @param cache the cache
*/
void setDistributedTreeManager (DistributedTreeManager distributedTreeManager);
/** Get the proxy factory service name used to create the Naming transport
* proxy.
*/
public ObjectName getProxyFactoryObjectName();
/** Set the proxy factory service name used to create the Naming transport
* proxy.
*/
public void setProxyFactoryObjectName(ObjectName proxyFactory);
/** Get the bootstrap port on which the HA-JNDI stub is made available
*/
int getPort();
/** Set the bootstrap port on which the HA-JNDI stub is made available
*/
void setPort(int p);
/** Get the bootstrap IP address on which the HA-JNDI stub is made available
*/
String getBindAddress();
/** Set the bootstrap IP address on which the HA-JNDI stub is made available
*/
void setBindAddress(String host) throws UnknownHostException;
/** Get the accept backlog for the bootstrap server socket
*/
int getBacklog();
/** Set the accept backlog for the bootstrap server socket
*/
void setBacklog(int backlog);
/**
* prevent autodiscovery service from starting
*/
void setDiscoveryDisabled(boolean disabled);
/**
* prevent autodiscovery service from starting
*/
boolean getDiscoveryDisabled();
/** Get the Auto-discovery multicast port
*/
int getAutoDiscoveryGroup();
/** Set the Auto-discovery multicast port.
*/
void setAutoDiscoveryGroup(int adGroup);
/** Get the auto-discovery bootstrap multicast address.
*/
String getAutoDiscoveryAddress();
/** Set the auto-discovery bootstrap multicast address. If null or empty, no
* auto-discovery bootstrap socket will be created.
*/
void setAutoDiscoveryAddress(String adAddress);
/** Get the auto-discovery bootstrap multicast bind address.
*/
String getAutoDiscoveryBindAddress();
/** Set the auto-discovery bootstrap multicast bind address. If not specified
* and a BindAddress is specified, the BindAddress will be used.
*/
void setAutoDiscoveryBindAddress(String adAddress) throws UnknownHostException;
/** Get the TTL (time-to-live) for autodiscovery IP multicast packets */
int getAutoDiscoveryTTL();
/** Set the TTL (time-to-live) for autodiscovery IP multicast packets */
void setAutoDiscoveryTTL(int ttl);
/** Set the thread pool used for the bootstrap and autodiscovery lookups
*
* @param poolMBean
*/
public void setLookupPool(BasicThreadPoolMBean poolMBean);
/** Expose the Naming service interface mapping as a read-only attribute
*
* @jmx:managed-attribute
*
* @return A Map<Long hash, Method> of the Naming interface
*/
public Map<Long, Method> getMethodMap();
/** Expose the Naming service via JMX for detached invokers.
*
* @param invocation A pointer to the invocation object
* @return Return value of method invocation.
*
* @throws Exception Failed to invoke method.
*/
public Object invoke(Invocation invocation) throws Exception;
}