次の問題があります。
AHashMap
はプロパティの設定に使用され、キーは aClassLoader
です。
プロパティを設定するコードは次のとおりです ( 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));
}
}
}
これらの値の 1 つがどこかにキャッシュされており、このハッシュマップをリセットする必要がありますが、問題は、これを行う方法がわからないことです。私はクラスをロードすることを考えました( a を使用する
ように委譲します)が、コードが次のことを行うことがわかります: axis
URLClassLoader
getThreadContextClassLoader();
public ClassLoader getThreadContextClassLoader()
{
ClassLoader classLoader;
try
{
classLoader = Thread.currentThread().getContextClassLoader();
}
catch(SecurityException e)
{
classLoader = null;
}
return classLoader;
}
したがって、使用するクラスをロードするために使用したもの(つまり)ではなく、現在のスレッドのクラスローダーを使用すると思いますaxis
。
これを回避する方法はありますか?
注:アプリケーションの一部として既にロードさaxis
れています。したがって、別のクラスローダーを介してリロードするという考えになります