[teiid-commits] teiid SVN: r4174 - trunk/jboss-integration/src/main/java/org/teiid/jboss.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Mon Jun 11 17:04:27 EDT 2012


Author: rareddy
Date: 2012-06-11 17:04:27 -0400 (Mon, 11 Jun 2012)
New Revision: 4174

Modified:
   trunk/jboss-integration/src/main/java/org/teiid/jboss/JBossLifeCycleListener.java
   trunk/jboss-integration/src/main/java/org/teiid/jboss/TeiidAdd.java
   trunk/jboss-integration/src/main/java/org/teiid/jboss/VDBDeployer.java
Log:
TEIID-1911: added to listen on the server_controller service transition from up to stop to capture the shutdown 

Modified: trunk/jboss-integration/src/main/java/org/teiid/jboss/JBossLifeCycleListener.java
===================================================================
--- trunk/jboss-integration/src/main/java/org/teiid/jboss/JBossLifeCycleListener.java	2012-06-11 20:21:55 UTC (rev 4173)
+++ trunk/jboss-integration/src/main/java/org/teiid/jboss/JBossLifeCycleListener.java	2012-06-11 21:04:27 UTC (rev 4174)
@@ -25,10 +25,12 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.jboss.msc.service.AbstractServiceListener;
 import org.jboss.msc.service.ServiceContainer.TerminateListener;
+import org.jboss.msc.service.ServiceController;
 import org.teiid.deployers.ContainerLifeCycleListener;
 
-class JBossLifeCycleListener implements TerminateListener, ContainerLifeCycleListener {
+class JBossLifeCycleListener extends AbstractServiceListener<Object> implements TerminateListener, ContainerLifeCycleListener {
 
 	private boolean shutdownInProgress = false;
 	private List<ContainerLifeCycleListener.LifeCycleEventListener> listeners = Collections.synchronizedList(new ArrayList<ContainerLifeCycleListener.LifeCycleEventListener>());
@@ -49,4 +51,15 @@
 	public void addListener(LifeCycleEventListener listener) {
 		listeners.add(listener);
 	}
+	
+	@Override
+    public void transition(final ServiceController controller, final ServiceController.Transition transition) {
+		if (transition.equals(ServiceController.Transition.UP_to_STOP_REQUESTED)) {
+			this.shutdownInProgress = true;
+		}
+		else if (transition.equals(ServiceController.Transition.STOP_REQUESTED_to_UP)) {
+			this.shutdownInProgress = false;
+		}
+		
+    }	
 }

Modified: trunk/jboss-integration/src/main/java/org/teiid/jboss/TeiidAdd.java
===================================================================
--- trunk/jboss-integration/src/main/java/org/teiid/jboss/TeiidAdd.java	2012-06-11 20:21:55 UTC (rev 4173)
+++ trunk/jboss-integration/src/main/java/org/teiid/jboss/TeiidAdd.java	2012-06-11 21:04:27 UTC (rev 4174)
@@ -50,6 +50,7 @@
 import org.jboss.as.naming.service.BinderService;
 import org.jboss.as.server.AbstractDeploymentChainStep;
 import org.jboss.as.server.DeploymentProcessorTarget;
+import org.jboss.as.server.Services;
 import org.jboss.as.server.deployment.Phase;
 import org.jboss.dmr.ModelNode;
 import org.jboss.modules.Module;
@@ -377,6 +378,7 @@
         newControllers.add(controller);
         ServiceContainer container =  controller.getServiceContainer();
         container.addTerminateListener(shutdownListener);
+        container.getService(Services.JBOSS_SERVER_CONTROLLER).addListener(shutdownListener);
             	
         // add JNDI for event distributor
 		final ReferenceFactoryService<EventDistributorFactory> referenceFactoryService = new ReferenceFactoryService<EventDistributorFactory>();
@@ -407,7 +409,7 @@
 				processorTarget.addDeploymentProcessor(Phase.STRUCTURE, Phase.STRUCTURE_WAR_DEPLOYMENT_INIT|0x0001,new VDBStructureDeployer());
 				processorTarget.addDeploymentProcessor(Phase.PARSE, Phase.PARSE_WEB_DEPLOYMENT|0x0001, new VDBParserDeployer());
 				processorTarget.addDeploymentProcessor(Phase.DEPENDENCIES, Phase.DEPENDENCIES_WAR_MODULE|0x0001, new VDBDependencyDeployer());
-				processorTarget.addDeploymentProcessor(Phase.INSTALL, Phase.INSTALL_WAR_DEPLOYMENT|0x1000, new VDBDeployer(translatorRepo, asyncThreadPoolName, statusChecker));
+				processorTarget.addDeploymentProcessor(Phase.INSTALL, Phase.INSTALL_WAR_DEPLOYMENT|0x1000, new VDBDeployer(translatorRepo, asyncThreadPoolName, statusChecker, shutdownListener));
 				
 				// translator deployers
 				processorTarget.addDeploymentProcessor(Phase.STRUCTURE, Phase.STRUCTURE_JDBC_DRIVER|0x0001,new TranslatorStructureDeployer());

Modified: trunk/jboss-integration/src/main/java/org/teiid/jboss/VDBDeployer.java
===================================================================
--- trunk/jboss-integration/src/main/java/org/teiid/jboss/VDBDeployer.java	2012-06-11 20:21:55 UTC (rev 4173)
+++ trunk/jboss-integration/src/main/java/org/teiid/jboss/VDBDeployer.java	2012-06-11 21:04:27 UTC (rev 4174)
@@ -37,24 +37,23 @@
 import org.jboss.modules.ModuleIdentifier;
 import org.jboss.modules.ModuleLoadException;
 import org.jboss.modules.ModuleLoader;
-import org.jboss.msc.service.AbstractServiceListener;
 import org.jboss.msc.service.Service;
 import org.jboss.msc.service.ServiceBuilder;
+import org.jboss.msc.service.ServiceBuilder.DependencyType;
 import org.jboss.msc.service.ServiceController;
+import org.jboss.msc.service.ServiceController.Mode;
+import org.jboss.msc.service.ServiceController.State;
 import org.jboss.msc.service.ServiceName;
 import org.jboss.msc.service.StartContext;
 import org.jboss.msc.service.StartException;
 import org.jboss.msc.service.StopContext;
-import org.jboss.msc.service.ServiceBuilder.DependencyType;
-import org.jboss.msc.service.ServiceController.Mode;
-import org.jboss.msc.service.ServiceController.State;
 import org.teiid.adminapi.Model;
 import org.teiid.adminapi.Translator;
 import org.teiid.adminapi.VDBImport;
 import org.teiid.adminapi.impl.ModelMetaData;
+import org.teiid.adminapi.impl.ModelMetaData.ValidationError;
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.adminapi.impl.VDBTranslatorMetaData;
-import org.teiid.adminapi.impl.ModelMetaData.ValidationError;
 import org.teiid.common.buffer.BufferManager;
 import org.teiid.deployers.UDFMetaData;
 import org.teiid.deployers.VDBRepository;
@@ -77,11 +76,13 @@
 	private TranslatorRepository translatorRepository;
 	private String asyncThreadPoolName;
 	private VDBStatusChecker vdbStatusChecker;
+	JBossLifeCycleListener shutdownListener;
 	
-	public VDBDeployer (TranslatorRepository translatorRepo, String poolName, VDBStatusChecker vdbStatusChecker) {
+	public VDBDeployer (TranslatorRepository translatorRepo, String poolName, VDBStatusChecker vdbStatusChecker, JBossLifeCycleListener shutdownListener) {
 		this.translatorRepository = translatorRepo;
 		this.asyncThreadPoolName = poolName;
 		this.vdbStatusChecker = vdbStatusChecker;
+		this.shutdownListener = shutdownListener;
 	}
 	
 	public void deploy(final DeploymentPhaseContext context)  throws DeploymentUnitProcessingException {
@@ -196,21 +197,6 @@
 		vdbService.addDependency(TeiidServiceNames.BUFFER_MGR, BufferManager.class, vdb.bufferManagerInjector);
 		vdbService.addDependency(DependencyType.OPTIONAL, TeiidServiceNames.OBJECT_REPLICATOR, ObjectReplicator.class, vdb.objectReplicatorInjector);
 		vdbService.setInitialMode(Mode.PASSIVE).install();
-		
-		ServiceController<?> scMain = deploymentUnit.getServiceRegistry().getService(deploymentUnit.getServiceName().append("contents")); //$NON-NLS-1$
-		scMain.addListener(new AbstractServiceListener<Object>() {
-			@Override
-		    public void serviceRemoveRequested(final ServiceController controller) {
-				final VDBMetaData vdb = deploymentUnit.getAttachment(TeiidAttachments.VDB_METADATA);
-				
-				ServiceController<?> sc = deploymentUnit.getServiceRegistry().getService(TeiidServiceNames.OBJECT_SERIALIZER);
-				if (sc != null) {
-					ObjectSerializer serilalizer = ObjectSerializer.class.cast(sc.getValue());
-					serilalizer.removeAttachments(vdb);	
-					LogManager.logTrace(LogConstants.CTX_RUNTIME, "VDB "+vdb.getName()+" metadata removed"); //$NON-NLS-1$ //$NON-NLS-2$
-				}
-		    }			
-		});
 	}
 	
 	private void dataSourceDependencies(VDBMetaData deployment, DependentServices svcListener) {
@@ -280,6 +266,17 @@
 		if (!TeiidAttachments.isVDBDeployment(deploymentUnit)) {
 			return;
 		}	
+		
+		if (!this.shutdownListener.isShutdownInProgress()) {
+			final VDBMetaData vdb = deploymentUnit.getAttachment(TeiidAttachments.VDB_METADATA);
+			
+			ServiceController<?> sc = deploymentUnit.getServiceRegistry().getService(TeiidServiceNames.OBJECT_SERIALIZER);
+			if (sc != null) {
+				ObjectSerializer serilalizer = ObjectSerializer.class.cast(sc.getValue());
+				serilalizer.removeAttachments(vdb);	
+				LogManager.logTrace(LogConstants.CTX_RUNTIME, "VDB "+vdb.getName()+" metadata removed"); //$NON-NLS-1$ //$NON-NLS-2$
+			}		
+		}
 	}
 	
 	private MetadataRepository getMetadataRepository(VDBMetaData vdb, String modelName, IndexMetadataRepository indexRepo) throws DeploymentUnitProcessingException {



More information about the teiid-commits mailing list