"each Connection Factory");
}
String locatorURI = (String)JMXAccessor.getJMXAttributeOverSecurity(server, connectorObjectName, "InvokerLocator");
ServerPeer serverPeer = (ServerPeer)JMXAccessor.getJMXAttributeOverSecurity(server, serverPeerObjectName, "Instance");
if (!serverPeer.isSupportsFailover())
{
this.supportsFailover = false;
}
InvokerLocator locator = new InvokerLocator(locatorURI);
String protocol = locator.getProtocol();
if (!disableRemotingChecks && (protocol.equals("bisocket") || protocol.equals("sslbisocket")))
{
//Sanity check - If users are using the AS Service Binding Manager to provide the remoting connector
//configuration, it is quite easy for them to end up using an old version depending on what version on
//the AS they are running in - e.g. if they have forgotten to update it.
//This can lead to subtle errors - therefore we do a sanity check by checking the existence of some properties
//which should always be there
Map params = locator.getParameters();
//The "compulsory" parameters
boolean cont =
checkParam(params, "marshaller", "org.jboss.jms.wireformat.JMSWireFormat") &&
checkParam(params, "unmarshaller", "org.jboss.jms.wireformat.JMSWireFormat") &&
checkParam(params, "dataType", "jms") &&
checkParam(params, "clientSocketClass", "org.jboss.jms.client.remoting.ClientSocketWrapper");
if (!cont)
{
throw new IllegalArgumentException("Failed to deploy connection factory since remoting configuration seems incorrect.");
}
String val = (String)params.get("clientLeasePeriod");
if (val != null)
{
int i = Integer.parseInt(val);
if (i < 5000)
{
log.warn("Value of clientLeasePeriod at " + i + " seems low. Normal values are >= 5000");
}
}
val = (String)params.get("JBM_clientMaxPoolSize");
if (val != null)
{
int i = Integer.parseInt(val);
if (i < 50)
{
log.warn("Value of JBM_clientMaxPoolSize at " + i + " seems low. Normal values are >= 50");
}
}
}
connectionFactoryManager = serverPeer.getConnectionFactoryManager();
connectorManager = serverPeer.getConnectorManager();
connectionManager = serverPeer.getConnectionManager();
int refCount = connectorManager.registerConnector(connectorObjectName.getCanonicalName());
long leasePeriod = (Long)JMXAccessor.getJMXAttributeOverSecurity(server, connectorObjectName, "LeasePeriod");
// if leasePeriod <= 0, disable pinging altogether
boolean enablePing = leasePeriod > 0;
if (refCount == 1 && enablePing)
{
// install the connection listener that listens for failed connections
server.invoke(connectorObjectName, "addConnectionListener",
new Object[] {connectionManager},
new String[] {"org.jboss.remoting.ConnectionListener"});
}
// We use the MBean service name to uniquely identify the connection factory
connectionFactoryManager.
registerConnectionFactory(getServiceName().getCanonicalName(), clientID, jndiBindings,
locatorURI, enablePing, prefetchSize, slowConsumers,
defaultTempQueueFullSize, defaultTempQueuePageSize,
defaultTempQueueDownCacheSize, dupsOKBatchSize, supportsFailover, supportsLoadBalancing,
loadBalancingFactory, strictTck, sendAcksAsync, enableOrderingGroup, defaultOrderingGroupName,
maxRetryChangeRate, retryChangeRateInterval, minTimeoutProcessTime);
String info = "Connector " + locator.getProtocol() + "://" +
locator.getHost() + ":" + locator.getPort();
if (enablePing)
{
info += " has leasing enabled, lease period " + leasePeriod + " milliseconds";
}
else
{
info += " has lease disabled";
}
log.info(info);
serverPeer.registerCFForRecovery(serviceName);
log.info(this + " started");
}
catch (Throwable t)
{
throw ExceptionUtil.handleJMXInvocation(t, this + " startService");