You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2007/04/20 20:35:00 UTC
svn commit: r530881 - in
/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2: context/
deployment/ util/
Author: dims
Date: Fri Apr 20 11:34:59 2007
New Revision: 530881
URL: http://svn.apache.org/viewvc?view=rev&rev=530881
Log:
Fix for AXIS2-2484 - IllegalArgumentException: Null InputStream is not a valid argument when loading axis client from URLClassLoader
Modified:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/FileSystemConfigurator.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/URLBasedAxisConfigurator.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/WarBasedAxisConfigurator.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Loader.java
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java?view=diff&rev=530881&r1=530880&r2=530881
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java Fri Apr 20 11:34:59 2007
@@ -31,6 +31,7 @@
import org.apache.axis2.modules.Module;
import org.apache.axis2.transport.TransportSender;
import org.apache.axis2.util.SessionUtils;
+import org.apache.axis2.util.Loader;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -262,8 +263,7 @@
* @return Returns ConfigurationContext.
*/
public static ConfigurationContext createDefaultConfigurationContext() throws Exception {
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- InputStream in = cl.getResourceAsStream(DeploymentConstants.AXIS2_CONFIGURATION_RESOURCE);
+ InputStream in = Loader.getResourceAsStream(DeploymentConstants.AXIS2_CONFIGURATION_RESOURCE);
AxisConfiguration axisConfig = new AxisConfiguration();
AxisConfigBuilder builder = new AxisConfigBuilder(in, axisConfig, null);
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/FileSystemConfigurator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/FileSystemConfigurator.java?view=diff&rev=530881&r1=530880&r2=530881
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/FileSystemConfigurator.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/FileSystemConfigurator.java Fri Apr 20 11:34:59 2007
@@ -2,6 +2,7 @@
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
+import org.apache.axis2.util.Loader;
import org.apache.axis2.description.Parameter;
import org.apache.axis2.engine.AxisConfiguration;
import org.apache.axis2.engine.AxisConfigurator;
@@ -103,9 +104,8 @@
if (axis2xml != null && !"".equals(axis2xml)) {
axis2xmlSream = new FileInputStream(axis2xml);
} else {
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
axis2xmlSream =
- cl.getResourceAsStream(DeploymentConstants.AXIS2_CONFIGURATION_RESOURCE);
+ Loader.getResourceAsStream(DeploymentConstants.AXIS2_CONFIGURATION_RESOURCE);
}
axisConfig = populateAxisConfiguration(axis2xmlSream);
} catch (FileNotFoundException e) {
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/URLBasedAxisConfigurator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/URLBasedAxisConfigurator.java?view=diff&rev=530881&r1=530880&r2=530881
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/URLBasedAxisConfigurator.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/URLBasedAxisConfigurator.java Fri Apr 20 11:34:59 2007
@@ -1,6 +1,7 @@
package org.apache.axis2.deployment;
import org.apache.axis2.AxisFault;
+import org.apache.axis2.util.Loader;
import org.apache.axis2.description.Parameter;
import org.apache.axis2.engine.AxisConfiguration;
import org.apache.axis2.engine.AxisConfigurator;
@@ -44,9 +45,8 @@
InputStream axis2xmlStream;
try {
if (axis2xml == null) {
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
axis2xmlStream =
- cl.getResourceAsStream(DeploymentConstants.AXIS2_CONFIGURATION_RESOURCE);
+ Loader.getResourceAsStream(DeploymentConstants.AXIS2_CONFIGURATION_RESOURCE);
} else {
axis2xmlStream = axis2xml.openStream();
}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/WarBasedAxisConfigurator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/WarBasedAxisConfigurator.java?view=diff&rev=530881&r1=530880&r2=530881
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/WarBasedAxisConfigurator.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/WarBasedAxisConfigurator.java Fri Apr 20 11:34:59 2007
@@ -2,6 +2,7 @@
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
+import org.apache.axis2.util.Loader;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.deployment.repository.util.ArchiveReader;
import org.apache.axis2.description.AxisServiceGroup;
@@ -129,9 +130,8 @@
} // catch
if (axis2Stream == null) {
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
axis2Stream =
- cl.getResourceAsStream(DeploymentConstants.AXIS2_CONFIGURATION_RESOURCE);
+ Loader.getResourceAsStream(DeploymentConstants.AXIS2_CONFIGURATION_RESOURCE);
}
axisConfig = populateAxisConfiguration(axis2Stream);
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Loader.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Loader.java?view=diff&rev=530881&r1=530880&r2=530881
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Loader.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Loader.java Fri Apr 20 11:34:59 2007
@@ -24,6 +24,7 @@
import java.lang.reflect.InvocationTargetException;
import java.net.URL;
import java.security.PrivilegedAction;
+import java.io.InputStream;
/**
* Loads resources (or images) from various sources.
@@ -100,6 +101,90 @@
log.warn("Caught Exception while in Loader.getResource. This may be innocuous.", t);
}
return getResource(resource);
+ }
+
+ /**
+ * Searches for <code>resource</code> in different
+ * places. The search order is as follows:
+ * <ol>
+ * <p><li>Search for <code>resource</code> using the thread context
+ * class loader under Java2. If that fails, search for
+ * <code>resource</code> using the class loader that loaded this
+ * class (<code>Loader</code>).
+ * <p><li>Try one last time with
+ * <code>ClassLoader.getSystemResourceAsStream(resource)</code>, that is is
+ * using the system class loader in JDK 1.2 and virtual machine's
+ * built-in class loader in JDK 1.1.
+ * </ol>
+ * <p/>
+ *
+ * @param resource
+ * @return Returns URL
+ */
+ static public InputStream getResourceAsStream(String resource) {
+ ClassLoader classLoader = null;
+ try {
+ // Let's try the Thread Context Class Loader
+ classLoader = getTCL();
+ if (classLoader != null) {
+ log.debug("Trying to find [" + resource + "] using " + classLoader +
+ " class loader.");
+ InputStream is = classLoader.getResourceAsStream(resource);
+ if (is != null) {
+ return is;
+ }
+ }
+ } catch (Throwable t) {
+ log.warn("Caught Exception while in Loader.getResourceAsStream. This may be innocuous.", t);
+ }
+
+ try {
+ // We could not find resource. Ler us now try with the
+ // classloader that loaded this class.
+ classLoader = Loader.class.getClassLoader();
+ if (classLoader != null) {
+ log.debug("Trying to find [" + resource + "] using " + classLoader +
+ " class loader.");
+ InputStream is = classLoader.getResourceAsStream(resource);
+ if (is != null) {
+ return is;
+ }
+ }
+ } catch (Throwable t) {
+ log.warn("Caught Exception while in Loader.getResourceAsStream. This may be innocuous.", t);
+ }
+
+ // Last ditch attempt: get the resource from the class path. It
+ // may be the case that clazz was loaded by the Extentsion class
+ // loader which the parent of the system class loader. Hence the
+ // code below.
+ log.debug("Trying to find [" + resource + "] using ClassLoader.getSystemResourceAsStream().");
+ return ClassLoader.getSystemResourceAsStream(resource);
+ }
+
+
+ /**
+ * Gets the resource with the specified class loader.
+ *
+ * @param loader
+ * @param resource
+ * @return Returns URL.
+ * @throws ClassNotFoundException
+ */
+ static public InputStream getResourceAsStream(ClassLoader loader, String resource)
+ throws ClassNotFoundException {
+ try {
+ if (loader != null) {
+ log.debug("Trying to find [" + resource + "] using " + loader + " class loader.");
+ InputStream is = loader.getResourceAsStream(resource);
+ if (is != null) {
+ return is;
+ }
+ }
+ } catch (Throwable t) {
+ log.warn("Caught Exception while in Loader.getResource. This may be innocuous.", t);
+ }
+ return getResourceAsStream(resource);
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org