You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by jb...@apache.org on 2011/09/02 08:43:45 UTC

svn commit: r1164362 - in /servicemix/smx3/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework: AdminCommandsService.java InstallationService.java

Author: jbonofre
Date: Fri Sep  2 06:43:45 2011
New Revision: 1164362

URL: http://svn.apache.org/viewvc?rev=1164362&view=rev
Log:
[SM-2117] Fix components uninstall after container restart

Modified:
    servicemix/smx3/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/AdminCommandsService.java
    servicemix/smx3/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/InstallationService.java

Modified: servicemix/smx3/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/AdminCommandsService.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/AdminCommandsService.java?rev=1164362&r1=1164361&r2=1164362&view=diff
==============================================================================
--- servicemix/smx3/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/AdminCommandsService.java (original)
+++ servicemix/smx3/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/AdminCommandsService.java Fri Sep  2 06:43:45 2011
@@ -82,6 +82,10 @@ public class AdminCommandsService extend
         if (!comp.isShutDown()) {
             throw ManagementSupport.failure("uninstallComponent", "Component '" + name + "' is not shut down.");
         }
+        // taken from org.apache.servicemix.jbi.framework.AutoDeploymentService#removeArchive
+        // ensure installer is loaded
+        container.getInstallationService().loadInstaller(name);
+        // uninstall and delete component
         boolean success = container.getInstallationService().unloadInstaller(name, true);
         if (success) {
             return ManagementSupport.createSuccessMessage("uninstallComponent", name);
@@ -276,9 +280,10 @@ public class AdminCommandsService extend
      * Prints information about all components (Service Engine or Binding
      * Component) installed
      * 
-     * @param serviceEngines
-     * @param bindingComponents
-     * @param state
+     * @param excludeSEs
+     * @param excludeBCs
+     * @param excludePojos
+     * @param requiredState
      * @param sharedLibraryName
      * @param serviceAssemblyName
      * @return list of components in an XML blob

Modified: servicemix/smx3/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/InstallationService.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/InstallationService.java?rev=1164362&r1=1164361&r2=1164362&view=diff
==============================================================================
--- servicemix/smx3/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/InstallationService.java (original)
+++ servicemix/smx3/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/InstallationService.java Fri Sep  2 06:43:45 2011
@@ -90,24 +90,22 @@ public class InstallationService extends
             ObjectName result = null;
             LOGGER.debug("Loading new installer from {}", installJarURL);
             File tmpDir = AutoDeploymentService.unpackLocation(environmentContext.getTmpDir(), installJarURL);
-            if (tmpDir != null) {
-                Descriptor root = DescriptorFactory.buildDescriptor(tmpDir);
-                if (root != null && root.getComponent() != null) {
-                    String componentName = root.getComponent().getIdentification().getName();
-                    if (!installers.containsKey(componentName)) {
-                        InstallerMBeanImpl installer = doInstallArchive(tmpDir, root);
-                        if (installer != null) {
-                            result = installer.getObjectName();
-                            installers.put(componentName, installer);
-                        }
-                    } else {
-                        throw new RuntimeException("An installer already exists for " + componentName);
-                    }
-                } else {
-                    throw new RuntimeException("Could not find Component from: " + installJarURL);
-                }
-            } else {
-                throw new RuntimeException("location: " + installJarURL + " isn't valid");
+            if (tmpDir == null) {
+                throw new RuntimeException("loation " + installJarURL + " isn't valid");
+            }
+            Descriptor root = DescriptorFactory.buildDescriptor(tmpDir);
+            if (root == null || root.getComponent() == null) {
+                throw new RuntimeException("Could not find Component from " + installJarURL);
+            }
+            String componentName = root.getComponent().getIdentification().getName();
+            if (installers.containsKey(componentName)) {
+                throw new RuntimeException("An installer already exists for " + componentName);
+            }
+            InstallerMBeanImpl installer = doInstallArchive(tmpDir, root);
+            if (installer != null) {
+                result = installer.getObjectName();
+                LOGGER.debug("Registering installer as loaded for component {}", componentName);
+                installers.put(componentName, installer);
             }
             return result;
         } catch (Throwable t) {
@@ -132,10 +130,14 @@ public class InstallationService extends
      *         existing installation context.
      */
     public ObjectName loadInstaller(String aComponentName) {
+        LOGGER.debug("Going to load installer for component {}", aComponentName);
         InstallerMBeanImpl installer = installers.get(aComponentName);
+        LOGGER.debug("Found installer for component {}", aComponentName);
         if (installer == null) {
+            LOGGER.debug("Loaded installer for component {} was not found. Trying non-loaded installers", aComponentName);
             installer = nonLoadedInstallers.get(aComponentName);
             if (installer != null) {
+                LOGGER.debug("Found non-loaded installer for component {}", aComponentName);
                 try {
                     // create an MBean for the installer
                     ObjectName objectName = managementContext.createCustomComponentMBeanName("Installer", aComponentName);
@@ -146,6 +148,8 @@ public class InstallationService extends
                     throw new RuntimeException("Could not load installer", e);
                 }
                 return installer.getObjectName();
+            } else {
+                LOGGER.debug("Did not found any installer for component " + aComponentName);
             }
         }
         return null;
@@ -176,20 +180,26 @@ public class InstallationService extends
      * @return - true if the operation was successful, otherwise false.
      */
     public boolean unloadInstaller(String componentName, boolean isToBeDeleted) {
+        LOGGER.debug("Going to unload installer for component {}", componentName);
         boolean result = false;
         try {
             InstallerMBeanImpl installer = installers.remove(componentName);
             result = installer != null;
             if (result) {
+                LOGGER.debug("Found installer for component {}", componentName);
                 container.getManagementContext().unregisterMBean(installer);
                 if (isToBeDeleted) {
+                    LOGGER.debug("Uninstalling component {}", componentName);
                     installer.uninstall();
                 } else {
+                    LOGGER.debug("Registering installer as non-loaded for component {}", componentName);
                     nonLoadedInstallers.put(componentName, installer);
                 }
+            } else {
+                LOGGER.debug("Did not found installer for component {}", componentName);
             }
         } catch (JBIException e) {
-            String errStr = "Problem shutting down Component: " + componentName;
+            String errStr = "Problem unloading installer for component " + componentName;
             LOGGER.error(errStr, e);
         }
         return result;
@@ -293,6 +303,7 @@ public class InstallationService extends
      * @throws DeploymentException
      */
     protected void install(File tmpDir, Properties props, Descriptor root, boolean autoStart) throws DeploymentException {
+        LOGGER.debug("Going to install component from {}", tmpDir.getPath());
         if (root.getComponent() != null) {
             String componentName = root.getComponent().getIdentification().getName();
             if (installers.containsKey(componentName)) {
@@ -336,6 +347,7 @@ public class InstallationService extends
                         throw new DeploymentException(e);
                     }
                 }
+                LOGGER.debug("Registering installer as loaded for component {}", componentName);
                 installers.put(componentName, installer);
             }
         }
@@ -524,10 +536,13 @@ public class InstallationService extends
     }
 
     protected void buildComponent(File componentDirectory) throws DeploymentException {
+        LOGGER.debug("Building component from directory {}" + componentDirectory.getPath());
         try {
             String componentName = componentDirectory.getName();
             ComponentEnvironment env = container.getEnvironmentContext().getComponentEnvironment(componentName);
             if (!env.getStateFile().exists()) {
+                LOGGER.debug("Removing directory {} as component has not been installed (there is not state file)",
+                        componentDirectory.getPath());
                 // An installer has been created but the component has not been
                 // installed
                 // So remove it
@@ -536,6 +551,7 @@ public class InstallationService extends
                 InstallerMBeanImpl installer = createInstaller(componentName);
                 installer.activateComponent();
                 nonLoadedInstallers.put(componentName, installer);
+                LOGGER.debug("Registering installer as loaded for component {}", componentName);
             }
         } catch (Throwable e) {
             LOGGER.error("Failed to deploy component: {}", componentDirectory.getName(), e);