[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