You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by ve...@apache.org on 2016/07/02 12:57:12 UTC
svn commit: r1751057 - in /axis/axis2/java/core/trunk/modules/kernel:
src/org/apache/axis2/classloader/ src/org/apache/axis2/deployment/
src/org/apache/axis2/deployment/util/ test/org/apache/axis2/classloader/
Author: veithen
Date: Sat Jul 2 12:57:12 2016
New Revision: 1751057
URL: http://svn.apache.org/viewvc?rev=1751057&view=rev
Log:
AXIS2-5792: Use the same class loaders on Windows as on Unix, to make EnableChildFirstClassLoading work (AXIS2-4349 only implementd that feature for Unix). This effectively reverts the change implemented in AXIS2-4072 and instead levarages the fact that on recent Java versions, URLClassLoader has a close() method.
Removed:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/AbstractResourceHandle.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/AbstractUrlResourceLocation.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/DirectoryResourceHandle.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/DirectoryResourceLocation.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/IoUtil.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/JarFileClassLoader.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/JarFileUrlConnection.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/JarFileUrlStreamHandler.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/JarResourceHandle.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/JarResourceLocation.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/JarStreamHandlerFactory.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/ResourceEnumeration.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/ResourceFinder.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/ResourceHandle.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/ResourceLocation.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/UrlResourceFinder.java
axis/axis2/java/core/trunk/modules/kernel/test/org/apache/axis2/classloader/
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java
Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java?rev=1751057&r1=1751056&r2=1751057&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java (original)
+++ axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java Sat Jul 2 12:57:12 2016
@@ -22,7 +22,6 @@ package org.apache.axis2.deployment;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
-import org.apache.axis2.classloader.JarFileClassLoader;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.deployment.repository.util.ArchiveReader;
import org.apache.axis2.deployment.repository.util.DeploymentFileData;
@@ -47,6 +46,7 @@ import org.apache.commons.logging.LogFac
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
import java.io.BufferedReader;
+import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -1156,19 +1156,23 @@ public abstract class DeploymentEngine i
return (extensionMap != null) ? extensionMap.get(extension) : null;
}
+ private static void destroyClassLoader(ClassLoader classLoader) {
+ if (classLoader instanceof DeploymentClassLoader && classLoader instanceof Closeable) {
+ try {
+ ((Closeable)classLoader).close();
+ } catch (IOException ex) {
+ log.warn("Failed to destroy class loader " + classLoader, ex);
+ }
+ }
+ }
+
/**
* Clean up the mess
*/
public void cleanup() {
- if (axisConfig.getModuleClassLoader() instanceof JarFileClassLoader) {
- ((JarFileClassLoader) axisConfig.getModuleClassLoader()).destroy();
- }
- if (axisConfig.getServiceClassLoader() instanceof JarFileClassLoader) {
- ((JarFileClassLoader) axisConfig.getServiceClassLoader()).destroy();
- }
- if (axisConfig.getSystemClassLoader() instanceof JarFileClassLoader) {
- ((JarFileClassLoader) axisConfig.getSystemClassLoader()).destroy();
- }
+ destroyClassLoader(axisConfig.getModuleClassLoader());
+ destroyClassLoader(axisConfig.getServiceClassLoader());
+ destroyClassLoader(axisConfig.getSystemClassLoader());
if (scheduler != null) {
scheduler.cleanup(schedulerTask);
}
Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java?rev=1751057&r1=1751056&r2=1751057&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java (original)
+++ axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java Sat Jul 2 12:57:12 2016
@@ -25,7 +25,6 @@ import org.apache.axiom.om.OMFactory;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axis2.AxisFault;
-import org.apache.axis2.classloader.JarFileClassLoader;
import org.apache.axis2.Constants;
import org.apache.axis2.jaxrs.JAXRSModel;
import org.apache.axis2.context.ConfigurationContext;
@@ -348,11 +347,7 @@ public class Utils {
classLoader = (URLClassLoader)AccessController
.doPrivileged(new PrivilegedAction() {
public Object run() {
- if (useJarFileClassLoader()) {
- return new JarFileClassLoader(urllist, parent);
- } else {
- return new DeploymentClassLoader(urllist, null, parent, isChildFirstClassLoading);
- }
+ return new DeploymentClassLoader(urllist, null, parent, isChildFirstClassLoading);
}
});
return classLoader;
@@ -361,20 +356,6 @@ public class Utils {
}
}
- private static boolean useJarFileClassLoader() {
- // The JarFileClassLoader was created to address a locking problem seen only on Windows platforms.
- // It carries with it a slight performance penalty that needs to be addressed. Rather than make
- // *nix OSes carry this burden we'll engage the JarFileClassLoader for Windows or if the user
- // specifically requests it.
- boolean useJarFileClassLoader;
- if (System.getProperty("org.apache.axis2.classloader.JarFileClassLoader") == null) {
- useJarFileClassLoader = System.getProperty("os.name").startsWith("Windows");
- } else {
- useJarFileClassLoader = Boolean.getBoolean("org.apache.axis2.classloader.JarFileClassLoader");
- }
- return useJarFileClassLoader;
- }
-
private static boolean addFiles(ArrayList urls, final File libfiles)
throws MalformedURLException {
Boolean exists = (Boolean)org.apache.axis2.java.security.AccessController