From 415750c42075f9ceb01abbb2f58eefb5191ab06a Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Thu, 14 Feb 2008 01:49:59 +0000
Subject: [PATCH] - followup to [Issue 2877] : Issue with creation of connection handler: fix various dynamic re/configuration issues.
---
opends/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java | 43 ++++++++++++---------
opends/src/server/org/opends/server/core/ConnectionHandlerConfigManager.java | 6 ++
opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java | 36 +++++++++---------
3 files changed, 47 insertions(+), 38 deletions(-)
diff --git a/opends/src/server/org/opends/server/core/ConnectionHandlerConfigManager.java b/opends/src/server/org/opends/server/core/ConnectionHandlerConfigManager.java
index 742fe7c..3c1521e 100644
--- a/opends/src/server/org/opends/server/core/ConnectionHandlerConfigManager.java
+++ b/opends/src/server/org/opends/server/core/ConnectionHandlerConfigManager.java
@@ -252,6 +252,7 @@
ConnectionHandler connectionHandler = connectionHandlers.get(dn);
if (connectionHandler != null) {
DirectoryServer.deregisterConnectionHandler(connectionHandler);
+ connectionHandlers.remove(dn);
connectionHandler.finalizeConnectionHandler(
INFO_CONNHANDLER_CLOSED_BY_DELETE.get(),
@@ -443,8 +444,11 @@
ConnectionHandler connectionHandler = null;
Class<? extends ConnectionHandler> theClass;
try {
+ connectionHandler = connectionHandlers.get(config.dn());
theClass = pd.loadClass(className, ConnectionHandler.class);
- connectionHandler = theClass.newInstance();
+ if (connectionHandler == null) {
+ connectionHandler = theClass.newInstance();
+ }
} catch (Exception e) {
if (debugEnabled())
{
diff --git a/opends/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java b/opends/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java
index 27f62e6..8c951fd 100644
--- a/opends/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java
+++ b/opends/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java
@@ -138,8 +138,12 @@
rmiConnectorRestart = true;
}
- if (!currentConfig.getSSLCertNickname().equals(
- config.getSSLCertNickname())) {
+ if (((currentConfig.getSSLCertNickname() != null) &&
+ !currentConfig.getSSLCertNickname().equals(
+ config.getSSLCertNickname())) ||
+ ((config.getSSLCertNickname() != null) &&
+ !config.getSSLCertNickname().equals(
+ currentConfig.getSSLCertNickname()))) {
rmiConnectorRestart = true;
}
@@ -402,25 +406,26 @@
{
JMXConnectionHandlerCfg config = (JMXConnectionHandlerCfg) configuration;
- // Attempt to bind to the listen port to verify whether the connection
- // handler will be able to start.
- try
- {
- if (StaticUtils.isAddressInUse(
- new InetSocketAddress(config.getListenPort()).getAddress(),
- config.getListenPort(), true)) {
- throw new IOException(
- ERR_CONNHANDLER_ADDRESS_INUSE.get().toString());
+ if ((currentConfig == null) ||
+ (!currentConfig.isEnabled() && config.isEnabled()) ||
+ (currentConfig.getListenPort() != config.getListenPort())) {
+ // Attempt to bind to the listen port to verify whether the connection
+ // handler will be able to start.
+ try {
+ if (StaticUtils.isAddressInUse(
+ new InetSocketAddress(config.getListenPort()).getAddress(),
+ config.getListenPort(), true)) {
+ throw new IOException(
+ ERR_CONNHANDLER_ADDRESS_INUSE.get().toString());
+ }
+ } catch (Exception e) {
+ Message message = ERR_JMX_CONNHANDLER_CANNOT_BIND.get(
+ String.valueOf(config.dn()), config.getListenPort(),
+ getExceptionMessage(e));
+ unacceptableReasons.add(message);
+ return false;
}
}
- catch (Exception e)
- {
- Message message = ERR_JMX_CONNHANDLER_CANNOT_BIND.
- get(String.valueOf(config.dn()), config.getListenPort(),
- getExceptionMessage(e));
- unacceptableReasons.add(message);
- return false;
- }
return isConfigurationChangeAcceptable(config, unacceptableReasons);
}
diff --git a/opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java b/opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java
index b565302..f66c37c 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java
@@ -758,26 +758,26 @@
// Attempt to bind to the listen port on all configured addresses to
// verify whether the connection handler will be able to start.
- listenPort = config.getListenPort();
- listenAddresses = config.getListenAddress();
- allowReuseAddress = config.isAllowTCPReuseAddress();
+ if ((currentConfig == null) ||
+ (!currentConfig.isEnabled() && config.isEnabled())) {
+ for (InetAddress a : config.getListenAddress()) {
+ try {
+ if (StaticUtils.isAddressInUse(a, config.getListenPort(),
+ config.isAllowTCPReuseAddress())) {
+ throw new IOException(
+ ERR_CONNHANDLER_ADDRESS_INUSE.get().toString());
+ }
+ } catch (IOException e) {
+ if (debugEnabled()) {
+ TRACER.debugCaught(DebugLogLevel.ERROR, e);
+ }
- for (InetAddress a : listenAddresses) {
- try {
- if (StaticUtils.isAddressInUse(a, listenPort, allowReuseAddress)) {
- throw new IOException(
- ERR_CONNHANDLER_ADDRESS_INUSE.get().toString());
+ Message message = ERR_LDAP_CONNHANDLER_CANNOT_BIND.get(
+ String.valueOf(config.dn()), a.getHostAddress(),
+ config.getListenPort(), getExceptionMessage(e));
+ unacceptableReasons.add(message);
+ return false;
}
- } catch (IOException e) {
- if (debugEnabled()) {
- TRACER.debugCaught(DebugLogLevel.ERROR, e);
- }
-
- Message message = ERR_LDAP_CONNHANDLER_CANNOT_BIND.get(
- String.valueOf(config.dn()), a.getHostAddress(),
- listenPort, getExceptionMessage(e));
- unacceptableReasons.add(message);
- return false;
}
}
--
Gitblit v1.10.0