From be710e798ef5236310bfa3db5e09f933e847e23d Mon Sep 17 00:00:00 2001
From: ludovicp <ludovicp@localhost>
Date: Thu, 27 May 2010 13:13:11 +0000
Subject: [PATCH] Improves the time to start-up the server and the way service tags are detected
---
opendj-sdk/opends/src/server/org/opends/server/tools/ConfigureWindowsService.java | 4 +
opendj-sdk/opends/src/messages/messages/tools.properties | 4 +-
opendj-sdk/opends/resource/servicetag/opends.uuids.properties | 6 +-
opendj-sdk/opends/src/server/org/opends/server/servicetag/ServiceTagDefinition.java | 7 +++
opendj-sdk/opends/src/server/org/opends/server/servicetag/ServiceTagRegistration.java | 87 +++++++++++++++++++++++++++----------------
5 files changed, 69 insertions(+), 39 deletions(-)
diff --git a/opendj-sdk/opends/resource/servicetag/opends.uuids.properties b/opendj-sdk/opends/resource/servicetag/opends.uuids.properties
index d70e030..1c6ffd5 100644
--- a/opendj-sdk/opends/resource/servicetag/opends.uuids.properties
+++ b/opendj-sdk/opends/resource/servicetag/opends.uuids.properties
@@ -1,6 +1,6 @@
-org.opends.server.servicetag.productname=OpenDS 2.2
-org.opends.server.servicetag.version=2.2
-org.opends.server.servicetag.uuid=urn:uuid:03abeb3a-9cd1-11de-9d26-080020a9ed93
+org.opends.server.servicetag.productname=OpenDS 2.4
+org.opends.server.servicetag.version=2.4
+org.opends.server.servicetag.uuid=urn:uuid:16cff1a9-f950-11de-a671-080020a9ed93
org.opends.server.servicetag.parent=Unknown
org.opends.server.servicetag.parenturn=Unknown
org.opends.server.servicetag.vendor=Opends.org
diff --git a/opendj-sdk/opends/src/messages/messages/tools.properties b/opendj-sdk/opends/src/messages/messages/tools.properties
index 9123d5c..a2e94f4 100644
--- a/opendj-sdk/opends/src/messages/messages/tools.properties
+++ b/opendj-sdk/opends/src/messages/messages/tools.properties
@@ -1454,8 +1454,8 @@
SEVERE_ERR_CONFIGURE_WINDOWS_SERVICE_TOO_FEW_ARGS_824=You must provide at \
least one of the following arguments:\nenableService, disableService or \
serviceState or cleanupService
-INFO_WINDOWS_SERVICE_NAME_825=OpenDS
-INFO_WINDOWS_SERVICE_DESCRIPTION_826=Open source Next Generation Directory \
+INFO_WINDOWS_SERVICE_NAME_825=%s
+INFO_WINDOWS_SERVICE_DESCRIPTION_826=Next Generation Directory \
Server. Installation path: %s
INFO_WINDOWS_SERVICE_SUCCESSULLY_ENABLED_827=The server was successfully \
enabled to run as a Windows service
diff --git a/opendj-sdk/opends/src/server/org/opends/server/servicetag/ServiceTagDefinition.java b/opendj-sdk/opends/src/server/org/opends/server/servicetag/ServiceTagDefinition.java
index 156ec08..90e2819 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/servicetag/ServiceTagDefinition.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/servicetag/ServiceTagDefinition.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2008 Sun Microsystems, Inc.
+ * Copyright 2008-2010 Sun Microsystems, Inc.
*/
package org.opends.server.servicetag;
@@ -118,4 +118,9 @@
*/
final static String PRODUCT_PARENT_URN =
"org.opends.server.servicetag.parenturn";
+
+ /**
+ * Registration done file name.
+ */
+ final static String FILE_REGISTRATION_DONE = "st-registration.done";
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/servicetag/ServiceTagRegistration.java b/opendj-sdk/opends/src/server/org/opends/server/servicetag/ServiceTagRegistration.java
index 2fbee4e..cddc78f 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/servicetag/ServiceTagRegistration.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/servicetag/ServiceTagRegistration.java
@@ -22,11 +22,12 @@
* CDDL HEADER END
*
*
- * Copyright 2008-2009 Sun Microsystems, Inc.
+ * Copyright 2008-2010 Sun Microsystems, Inc.
*/
package org.opends.server.servicetag;
+import java.io.File;
import java.io.IOException;
import java.util.HashSet;
import java.util.Properties;
@@ -100,46 +101,62 @@
}
/**
- * Create the defined serviceTags for OpenDS Based Servers if
- * the native registration is supported
- * If the system supports service tag, stclient will be used
+ * Tests if the ST registration has already be done for the instance.
+ * @return true if the ST registration has been done, false otherwise.
+ */
+ public boolean isRegistrationAlreadyDone() {
+ File serviceTag =
+ new File(DirectoryServer.getInstanceRoot() +
+ File.separatorChar +
+ "config" +
+ File.separatorChar +
+ "servicetag" +
+ File.separatorChar +
+ ServiceTagDefinition.FILE_REGISTRATION_DONE);
+
+ if (!serviceTag.exists()) {
+ return false;
+ }
+ else {
+ return true;
+ }
+ }
+
+
+ /**
+ * Create the registration file.
+ * @throws IOException if the file cannot be created.
+ */
+ public void createRegistrationDone() throws IOException {
+ File serviceTag =
+ new File(DirectoryServer.getInstanceRoot() +
+ File.separatorChar +
+ "config" +
+ File.separatorChar +
+ "servicetag" +
+ File.separatorChar +
+ ServiceTagDefinition.FILE_REGISTRATION_DONE);
+
+ if (!serviceTag.exists()) {
+ serviceTag.createNewFile();
+ }
+ }
+
+
+ /**
+ * Create the defined serviceTags for OpenDS Based Servers.
+ * At this point the ST registration is supported. stclient will be used
* to create the OpenDS service tag.
* @param svcTag the ServiceTag to register.
* @throws org.opends.server.servicetag.ServiceTagException
* if the ServiceTag can not be registered
- * @throws org.opends.server.servicetag.ServiceTagAlreadyExistsException
- * if the ServiceTag already exists in the common registry based on
- * the product_urn and product_defined_instanceid
- * @throws java.lang.IllegalArgumentException if parameter is not valid.
*/
public void registerServiceTag(ServiceTag svcTag) throws
- ServiceTagException, IllegalArgumentException,
- ServiceTagAlreadyExistsException {
-
- // Test if the common registration is supported on the filesystem
- // or not
- if (!isCommonRegistrationSupported()) {
- throw new ServiceTagException(
- WARN_REGISTRY_NOT_SUPPORTED.get());
- }
-
- // Parameter checking
- if (svcTag == null) {
- throw new IllegalArgumentException(
- WARN_PARAMETER_CANNOT_BE_NULL.get("svcTag").toString());
- }
+ ServiceTagException {
try {
- // Add the ServiceTag if it does not exist
- if (this.registry.existServiceTag(
- svcTag.getProductURN(),
- svcTag.getProductDefinedInstanceID())) {
- throw new ServiceTagAlreadyExistsException
- (WARN_SERVICETAG_ALREADY_EXIST.get());
- }
-
// Add the ServiceTag in the common registry
this.registry.addServiceTag(svcTag);
-
+ this.createRegistrationDone();
} catch (IOException ex) {
throw new ServiceTagException(
WARN_SERVICETAG_CANNOT_BE_REGISTERED.get(
@@ -165,6 +182,12 @@
public Set<ServiceTag> registerServiceTags(String source)
throws ServiceTagException, IllegalArgumentException {
+ // Check if the registration has been done.
+ if (this.isRegistrationAlreadyDone()) {
+ throw new ServiceTagAlreadyExistsException
+ (WARN_SERVICETAG_ALREADY_EXIST.get());
+ }
+
// Parameter checking
// Test if the common registration is supported on the filesystem
// or not
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/ConfigureWindowsService.java b/opendj-sdk/opends/src/server/org/opends/server/tools/ConfigureWindowsService.java
index 37ab80a2..bb467db 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/ConfigureWindowsService.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/tools/ConfigureWindowsService.java
@@ -39,6 +39,7 @@
import org.opends.quicksetup.util.Utils;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.NullOutputStream;
+import org.opends.server.util.DynamicConstants;
import org.opends.server.util.SetupUtils;
import org.opends.server.util.args.ArgumentException;
import org.opends.server.util.args.ArgumentParser;
@@ -403,7 +404,8 @@
{
Message serviceName = Utils.getCustomizedObject(
"INFO_WINDOWS_SERVICE_NAME",
- INFO_WINDOWS_SERVICE_NAME.get(), Message.class);
+ INFO_WINDOWS_SERVICE_NAME.get(DynamicConstants.PRODUCT_NAME),
+ Message.class);
Message serviceDescription = Utils.getCustomizedObject(
"INFO_WINDOWS_SERVICE_DESCRIPTION",
INFO_WINDOWS_SERVICE_DESCRIPTION.get(getServerRoot()), Message.class);
--
Gitblit v1.10.0