Author: richard.opalka(a)jboss.com
Date: 2008-05-21 13:56:30 -0400 (Wed, 21 May 2008)
New Revision: 7126
Modified:
container/jboss50/branches/jbossws-jboss500/src/main/java/org/jboss/wsf/container/jboss50/transport/EJBHttpTransportManager.java
Log:
[JBWS-2188] call deploymentFactory only once per whole deployment - not for each endpoint
Modified:
container/jboss50/branches/jbossws-jboss500/src/main/java/org/jboss/wsf/container/jboss50/transport/EJBHttpTransportManager.java
===================================================================
---
container/jboss50/branches/jbossws-jboss500/src/main/java/org/jboss/wsf/container/jboss50/transport/EJBHttpTransportManager.java 2008-05-21
17:52:06 UTC (rev 7125)
+++
container/jboss50/branches/jbossws-jboss500/src/main/java/org/jboss/wsf/container/jboss50/transport/EJBHttpTransportManager.java 2008-05-21
17:56:30 UTC (rev 7126)
@@ -46,6 +46,7 @@
*/
public class EJBHttpTransportManager implements TransportManager
{
+ private static final String PROCESSED_BY_DEPLOYMENT_FACTORY =
"processed.by.deployment.factory";
private WebAppDeploymentFactory deploymentFactory;
private WebAppGenerator generator;
private Map<String, Deployment> deploymentRegistry = new HashMap<String,
Deployment>();
@@ -66,10 +67,17 @@
// TODO: Somehow the ServletClass and InitParameter need to go from TransportSpec
into generator
topLevelDeployment.setProperty(HttpSpec.PROPERTY_WEBAPP_SERVLET_CLASS,
httpSpec.getServletClass());
- topLevelDeployment.setProperty(HttpSpec.PROPERTY_WEBAPP_CONTEXT_PARAMETERS,
httpSpec.getContextParameter());
- URL webAppURL = generator.create(topLevelDeployment);
- deploymentFactory.create(topLevelDeployment, webAppURL);
-
+ topLevelDeployment.setProperty(HttpSpec.PROPERTY_WEBAPP_CONTEXT_PARAMETERS,
httpSpec.getContextParameter());
+
+ // TODO: JBWS-2188
+ Boolean alreadyDeployed =
(Boolean)topLevelDeployment.getProperty(PROCESSED_BY_DEPLOYMENT_FACTORY);
+ if ((alreadyDeployed == null) || (false == alreadyDeployed))
+ {
+ URL webAppURL = generator.create(topLevelDeployment);
+ deploymentFactory.create(topLevelDeployment, webAppURL);
+ topLevelDeployment.setProperty(PROCESSED_BY_DEPLOYMENT_FACTORY, Boolean.TRUE);
+ }
+
SPIProvider provider = SPIProviderResolver.getInstance().getProvider();
ServerConfigFactory spi = provider.getSPI(ServerConfigFactory.class);
ServerConfig serverConfig = spi.getServerConfig();
@@ -99,17 +107,23 @@
public void destroyListener(ListenerRef ref)
{
Deployment dep = deploymentRegistry.get(ref.getUUID());
- if(null==dep)
- throw new IllegalArgumentException("Unknown ListenerRef " + ref);
-
- try
+ if (dep != null)
{
- deploymentFactory.destroy(dep);
+ // TODO: JBWS-2188
+ Boolean alreadyDeployed =
(Boolean)dep.getProperty(PROCESSED_BY_DEPLOYMENT_FACTORY);
+ if ((alreadyDeployed != null) && (true == alreadyDeployed))
+ {
+ try
+ {
+ deploymentFactory.destroy(dep);
+ }
+ finally
+ {
+ deploymentRegistry.remove(ref.getUUID());
+ }
+ dep.removeProperty(PROCESSED_BY_DEPLOYMENT_FACTORY);
+ }
}
- finally
- {
- deploymentRegistry.remove(ref.getUUID());
- }
}
public void setDeploymentFactory(WebAppDeploymentFactory deploymentFactory)
Show replies by date