You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2009/03/13 14:49:40 UTC
svn commit: r753250 - in
/servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer:
artifacts/ impl/
Author: gnodet
Date: Fri Mar 13 13:49:39 2009
New Revision: 753250
URL: http://svn.apache.org/viewvc?rev=753250&view=rev
Log:
Fix minor issues that can arise when a problem happen at deployment time
Modified:
servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImpl.java
servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/AbstractInstaller.java
servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ComponentInstaller.java
servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/Deployer.java
servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ServiceAssemblyInstaller.java
Modified: servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImpl.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImpl.java?rev=753250&r1=753249&r2=753250&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImpl.java (original)
+++ servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImpl.java Fri Mar 13 13:49:39 2009
@@ -19,8 +19,10 @@
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
@@ -29,11 +31,10 @@
import org.apache.servicemix.jbi.deployer.ServiceAssembly;
import org.apache.servicemix.jbi.deployer.ServiceUnit;
-import org.apache.servicemix.jbi.deployer.events.LifeCycleEvent;
import org.apache.servicemix.jbi.deployer.descriptor.Connection;
import org.apache.servicemix.jbi.deployer.descriptor.DescriptorFactory;
import org.apache.servicemix.jbi.deployer.descriptor.ServiceAssemblyDesc;
-import org.apache.servicemix.jbi.deployer.artifacts.AssemblyReferencesListener;
+import org.apache.servicemix.jbi.deployer.events.LifeCycleEvent;
import org.apache.servicemix.nmr.api.Wire;
import org.apache.servicemix.nmr.core.util.MapToDictionary;
import org.osgi.framework.Bundle;
@@ -243,16 +244,23 @@
}
protected void checkComponentsStarted() throws JBIException {
- StringBuilder sb = new StringBuilder();
+ Set<String> names = new HashSet<String>();
for (ServiceUnitImpl su : serviceUnits) {
+ if (su.getComponent() == null) {
+ throw new JBIException("SU has not been correctly deployed: " + su.getName());
+ }
if (!LifeCycleMBean.STARTED.equals(su.getComponent().getCurrentState())) {
+ names.add(su.getComponentName());
+ }
+ }
+ if (!names.isEmpty()) {
+ StringBuilder sb = new StringBuilder();
+ for (String name : names) {
if (sb.length() > 0) {
sb.append(", ");
}
- sb.append(su.getComponentName());
+ sb.append(name);
}
- }
- if (sb.length() > 0) {
throw new JBIException("Components are not started: " + sb.toString());
}
}
Modified: servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/AbstractInstaller.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/AbstractInstaller.java?rev=753250&r1=753249&r2=753250&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/AbstractInstaller.java (original)
+++ servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/AbstractInstaller.java Fri Mar 13 13:49:39 2009
@@ -95,7 +95,11 @@
? AbstractLifecycleJbiArtifact.State.Started.name()
: AbstractLifecycleJbiArtifact.State.Shutdown.name());
}
- prefs.putLong(LAST_INSTALL, lastInstall);
+ }
+
+ protected void postInstall() throws Exception {
+ Preferences prefs = getPreferences();
+ prefs.putLong(LAST_INSTALL, getBundle().getLastModified());
prefs.flush();
}
Modified: servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ComponentInstaller.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ComponentInstaller.java?rev=753250&r1=753249&r2=753250&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ComponentInstaller.java (original)
+++ servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ComponentInstaller.java Fri Mar 13 13:49:39 2009
@@ -20,10 +20,8 @@
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
-import java.util.HashSet;
import java.util.List;
import java.util.Properties;
-import java.util.Set;
import javax.jbi.JBIException;
import javax.jbi.component.Bootstrap;
@@ -135,13 +133,16 @@
ObjectName name = initComponent();
cleanUpBootstrap();
installationContext.setInstall(false);
+ postInstall();
return name;
} catch (Exception e) {
cleanUpBootstrap();
throw e;
}
} else {
- return initComponent();
+ ObjectName name = initComponent();
+ postInstall();
+ return name;
}
} catch (Exception e) {
LOGGER.error(e.getMessage());
Modified: servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/Deployer.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/Deployer.java?rev=753250&r1=753249&r2=753250&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/Deployer.java (original)
+++ servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/Deployer.java Fri Mar 13 13:49:39 2009
@@ -344,13 +344,14 @@
throw new IllegalStateException("Unrecognized JBI descriptor: " + url);
}
installer.setBundle(bundle);
- installers.put(bundle, installer);
}
// TODO: handle the case where the bundle is restarted: i.e. the artifact is already installed
try {
installer.init();
installer.install();
+ // only register installer if installation has been successfull
+ installers.put(bundle, installer);
} catch (PendingException e) {
pendingInstallers.add(installer);
LOGGER.warn("Requirements not met for JBI artifact in bundle " + OsgiStringUtils.nullSafeNameAndSymName(bundle) + ". Installation pending. " + e);
@@ -503,6 +504,7 @@
for (ServiceUnitImpl su : assembly.getServiceUnitsList()) {
su.getComponentImpl().removeServiceUnit(su);
}
+ pendingAssemblies.remove(assembly);
}
}
Modified: servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ServiceAssemblyInstaller.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ServiceAssemblyInstaller.java?rev=753250&r1=753249&r2=753250&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ServiceAssemblyInstaller.java (original)
+++ servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ServiceAssemblyInstaller.java Fri Mar 13 13:49:39 2009
@@ -69,6 +69,7 @@
public ObjectName install() throws JBIException {
try {
List<ServiceUnitImpl> sus = deploySUs();
+ postInstall();
ServiceAssembly sa = deployer.registerServiceAssembly(bundle, descriptor.getServiceAssembly(), sus);
return deployer.getNamingStrategy().getObjectName(sa);
} catch (Exception e) {
@@ -107,14 +108,16 @@
if (assembly == null && !force) {
throw ManagementSupport.failure("undeployServiceAssembly", "ServiceAssembly '" + getName() + "' is not deployed.");
}
- // Undeploy SUs
- if (assembly.getServiceUnitsList() != null) {
- for (ServiceUnitImpl su : assembly.getServiceUnitsList()) {
- su.undeploy();
+ if (assembly != null) {
+ // Undeploy SUs
+ if (assembly.getServiceUnitsList() != null) {
+ for (ServiceUnitImpl su : assembly.getServiceUnitsList()) {
+ su.undeploy();
+ }
}
+ // Unregister assembly
+ deployer.unregisterServiceAssembly(assembly);
}
- // Unregister assembly
- deployer.unregisterServiceAssembly(assembly);
// Remove preferences
try {
deletePreferences();