我有以下问题。
AHashMap
用于设置属性,键是 a ClassLoader
。
设置属性的代码如下(AxisProperties
):
public static void setProperty(String propertyName, String value, boolean isDefault){
if(propertyName != null)
synchronized(propertiesCache)
{
ClassLoader classLoader = getThreadContextClassLoader();
HashMap properties = (HashMap)propertiesCache.get(classLoader);
if(value == null)
{
if(properties != null)
properties.remove(propertyName);
} else
{
if(properties == null)
{
properties = new HashMap();
propertiesCache.put(classLoader, properties);
}
properties.put(propertyName, new Value(value, isDefault));
}
}
}
其中一个值缓存在某处,我需要重置此哈希图,但问题是我不知道如何执行此操作。
我想加载类(委托axis
使用 a URLClassLoader
),但我看到代码是getThreadContextClassLoader();
这样的:
public ClassLoader getThreadContextClassLoader()
{
ClassLoader classLoader;
try
{
classLoader = Thread.currentThread().getContextClassLoader();
}
catch(SecurityException e)
{
classLoader = null;
}
return classLoader;
}
所以我认为它将使用我当前线程的类加载器,而不是我用来加载要使用的类的类加载器(即axis
)。
那么有没有办法解决这个问题?
注意:我已经加载axis
了我的应用程序的一部分。所以想法是通过不同的类加载器重新加载它