[jboss-svn-commits] JBL Code SVN: r25708 - labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/soa/esb/listeners/config.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Mar 18 09:15:26 EDT 2009


Author: tfennelly
Date: 2009-03-18 09:15:26 -0400 (Wed, 18 Mar 2009)
New Revision: 25708

Modified:
   labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java
Log:
https://jira.jboss.org/jira/browse/JBESB-2478

Modified: labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java	2009-03-18 11:57:14 UTC (rev 25707)
+++ labs/jbossesb/branches/JBESB_4_4_GA_FP/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java	2009-03-18 13:15:26 UTC (rev 25708)
@@ -21,21 +21,6 @@
 */
 package org.jboss.soa.esb.listeners.config;
 
-import java.io.*;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.*;
-import java.util.Map.Entry;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipException;
-import java.util.zip.ZipFile;
-import java.util.zip.ZipInputStream;
-import java.util.zip.ZipOutputStream;
-
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
-import javax.management.JMException;
-
 import org.jboss.deployment.DeploymentException;
 import org.jboss.deployment.DeploymentInfo;
 import org.jboss.deployment.SubDeployer;
@@ -43,28 +28,20 @@
 import org.jboss.internal.soa.esb.publish.ContractReferencePublisher;
 import org.jboss.internal.soa.esb.util.StreamUtils;
 import org.jboss.internal.soa.esb.util.XMLHelper;
-import org.jboss.internal.soa.esb.webservice.AddressingHandler;
-import org.jboss.internal.soa.esb.webservice.ESBContractGenerator;
-import org.jboss.internal.soa.esb.webservice.ESBResponseFilter;
-import org.jboss.internal.soa.esb.webservice.ESBServiceContractPublisher;
-import org.jboss.internal.soa.esb.webservice.ESBServiceEndpointInfo;
-import org.jboss.internal.soa.esb.webservice.JAXWSProviderClassGenerator;
+import org.jboss.internal.soa.esb.webservice.*;
 import org.jboss.logging.Logger;
 import org.jboss.metadata.MetaData;
 import org.jboss.metadata.XmlFileLoader;
 import org.jboss.mx.loading.LoaderRepositoryFactory;
-import org.jboss.mx.loading.RepositoryClassLoader;
 import org.jboss.mx.util.MBeanProxyExt;
 import org.jboss.mx.util.ObjectNameConverter;
-import org.jboss.soa.esb.Service;
 import org.jboss.soa.esb.ConfigurationException;
-import org.jboss.soa.esb.Configurable;
+import org.jboss.soa.esb.Service;
 import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.lifecycle.LifecycleResourceManager;
+import org.jboss.soa.esb.listeners.ListenerTagNames;
 import org.jboss.soa.esb.listeners.config.model.ModelAdapter;
 import org.jboss.soa.esb.listeners.config.model.ModelParser;
-import org.jboss.soa.esb.listeners.ListenerTagNames;
-import org.jboss.soa.esb.lifecycle.LifecycleResourceManager;
 import org.jboss.soa.esb.util.ClassUtil;
 import org.jboss.soa.esb.util.DeploymentArchive;
 import org.jboss.soa.esb.util.FileUtil;
@@ -72,11 +49,23 @@
 import org.jboss.system.server.ServerConfig;
 import org.jboss.system.server.ServerConfigLocator;
 import org.jboss.web.AbstractWebContainer;
-import org.w3c.dom.Element;
 import org.w3c.dom.Document;
-import org.w3c.dom.NodeList;
+import org.w3c.dom.Element;
 import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
+import javax.management.JMException;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import java.io.*;
+import java.net.URL;
+import java.util.*;
+import java.util.Map.Entry;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipException;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipOutputStream;
+
 /**
  * comment
  *
@@ -620,54 +609,42 @@
 
         // For each bus, gather the deployment archives to be deployed (can be one or more)...
         List<DeploymentArchive> deploymentArchives = new ArrayList<DeploymentArchive>();
-        ClassLoaderMetaData classloaderMetaData = null;
-        try {
-            Set<Map.Entry<String, List<ConfigTree>>> listenerGroupEntries = listenerGroups.entrySet();
+        Set<Map.Entry<String, List<ConfigTree>>> listenerGroupEntries = listenerGroups.entrySet();
 
-            for(Map.Entry<String, List<ConfigTree>> listenerGroup : listenerGroupEntries) {
-                String busIdRef = listenerGroup.getKey();
-                List<ConfigTree> listeners = listenerGroup.getValue();
+        for(Map.Entry<String, List<ConfigTree>> listenerGroup : listenerGroupEntries) {
+            String busIdRef = listenerGroup.getKey();
+            List<ConfigTree> listeners = listenerGroup.getValue();
 
-                String gatewayClassName = listeners.get(0).getAttribute(ListenerTagNames.GATEWAY_CLASS_TAG);
+            String gatewayClassName = listeners.get(0).getAttribute(ListenerTagNames.GATEWAY_CLASS_TAG);
 
-                // Lazily create the classloaderMetaData...
-                if(classloaderMetaData == null) {
-                    classloaderMetaData = getClassLoader(di);
-                }
+            Class gatewayClass;
+            ClassLoader originalTCCL = Thread.currentThread().getContextClassLoader();
 
-                Class gatewayClass;
-                ClassLoader originalTCCL = Thread.currentThread().getContextClassLoader();
-
-                Thread.currentThread().setContextClassLoader(classloaderMetaData.classloader) ;
+            Thread.currentThread().setContextClassLoader(di.localCl) ;
+            try {
                 try {
+                    gatewayClass = ClassUtil.forName(gatewayClassName, getClass());
+                } catch (ClassNotFoundException e) {
+                    throw new ConfigurationException("Gateway Class '" + gatewayClassName + "' not found on classpath.");
+                }
+
+                if(BusDeploymentFactory.class.isAssignableFrom(gatewayClass)) {
                     try {
-                        gatewayClass = ClassUtil.forName(gatewayClassName, getClass());
-                    } catch (ClassNotFoundException e) {
-                        throw new ConfigurationException("Gateway Class '" + gatewayClassName + "' not found on classpath.");
-                    }
+                        BusDeploymentFactory deploymentFactory = (BusDeploymentFactory) gatewayClass.newInstance();
 
-                    if(BusDeploymentFactory.class.isAssignableFrom(gatewayClass)) {
-                        try {
-                            BusDeploymentFactory deploymentFactory = (BusDeploymentFactory) gatewayClass.newInstance();
+                        deploymentFactory.setBusName(busIdRef);
+                        deploymentFactory.setListeners(listeners);
 
-                            deploymentFactory.setBusName(busIdRef);
-                            deploymentFactory.setListeners(listeners);
-
-                            deploymentArchives.addAll(deploymentFactory.getDeploymentArchives());
-                        } catch (InstantiationException e) {
-                            throw new ConfigurationException("Unable to create instance of BusDeploymentFactory '" + gatewayClassName + "'.", e);
-                        } catch (IllegalAccessException e) {
-                            throw new ConfigurationException("Unable to create instance of BusDeploymentFactory '" + gatewayClassName + "'.", e);
-                        }
+                        deploymentArchives.addAll(deploymentFactory.getDeploymentArchives());
+                    } catch (InstantiationException e) {
+                        throw new ConfigurationException("Unable to create instance of BusDeploymentFactory '" + gatewayClassName + "'.", e);
+                    } catch (IllegalAccessException e) {
+                        throw new ConfigurationException("Unable to create instance of BusDeploymentFactory '" + gatewayClassName + "'.", e);
                     }
-                } finally {
-                    Thread.currentThread().setContextClassLoader(originalTCCL) ;
                 }
+            } finally {
+                Thread.currentThread().setContextClassLoader(originalTCCL) ;
             }
-        } finally {
-            if(classloaderMetaData != null) {
-                classloaderMetaData.cleanup();
-            }
         }
 
         // Now run the deploys...
@@ -724,36 +701,6 @@
         return listenerGroups;
     }
 
-    private ClassLoaderMetaData getClassLoader(DeploymentInfo di) throws JMException {
-        if(di.parent != null) {
-            return new ClassLoaderMetaData(new URLClassLoader(new URL[] {di.localUrl}, di.parent.ucl));
-        } else {
-            // This is the part I fear Kev will have a fit about :)  Might be better to call
-            // DeploymentInfo.createClassLoader() and then access the ucl via the DeploymentInfo,
-            // but I'm a little nervous about altering the state of the DeploymentInfo instance.
-
-            ClassLoaderMetaData classLoaderMetaData = new ClassLoaderMetaData();
-            LoaderRepositoryFactory.LoaderRepositoryConfig repositoryConfig = di.repositoryConfig;
-
-            if(repositoryConfig == null) {
-                repositoryConfig = new LoaderRepositoryFactory.LoaderRepositoryConfig();
-            }
-
-            // Would think that we should only clean this up if we create it, but DeploymentInfo.cleanup()
-            // cleans it up either way.
-            classLoaderMetaData.repositoryConfig = repositoryConfig;
-
-            LoaderRepositoryFactory.createLoaderRepository(server, repositoryConfig);
-
-            Object[] args = { di.isXML ? null : di.localUrl, di.url, Boolean.TRUE };
-            String[] sig =  { "java.net.URL", "java.net.URL", "boolean" };
-
-            classLoaderMetaData.classloader = (ClassLoader) server.invoke(repositoryConfig.repositoryName, "newClassLoader", args, sig);
-
-            return classLoaderMetaData;
-        }
-    }
-
     private void addFile(final ZipOutputStream zos, final String filename, final String contents)
        throws IOException
    {
@@ -950,30 +897,6 @@
         return result ;
     }
 
-    private class ClassLoaderMetaData {
-        private ClassLoader classloader;
-        private LoaderRepositoryFactory.LoaderRepositoryConfig repositoryConfig;
-
-        public ClassLoaderMetaData() {
-        }
-
-        private ClassLoaderMetaData(ClassLoader classloader) {
-            this.classloader = classloader;
-        }
-
-        public void cleanup() {
-            try {
-                if(classloader instanceof RepositoryClassLoader) {
-                    ((RepositoryClassLoader) classloader).unregister();
-                }
-            } finally {
-                if(repositoryConfig != null) {
-                    LoaderRepositoryFactory.destroyLoaderRepository(server, repositoryConfig.repositoryName);
-                }
-            }
-        }
-    }
-
     static Map<String, String> getSchemas(final File file) throws DeploymentException
     {
         if (file == null)




More information about the jboss-svn-commits mailing list