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 {