在Tomcat中使用System Classloader加载类

时间:2014-09-05 10:38:05

标签: java tomcat classloader

我需要为在Tomcat中运行的应用程序提供RMIClassLoaderSpi的自定义实现。但是,似乎需要使用System Classloader加载此类。

有没有人知道向Tomcat提供类的好方法,以便可以使用System Classloader加载它?

我知道我可以设置shared.loader和server.loader属性,但据我所知,这些属性不会影响系统类加载器。

如果有人感兴趣,这是强制在RMIClassLoader中使用System Classloader的代码:

Class providerClass =
            Class.forName(providerClassName, false,
                  ClassLoader.getSystemClassLoader());

providerClassRMIClassLoaderSpi的自定义实现的名称。

1 个答案:

答案 0 :(得分:-1)

再看一下,似乎我可以修改setenv.sh来设置CLASSPATH变量,然后将其传播到系统类路径。

来自catalina.sh:

# Ensure that any user defined CLASSPATH variables are not used on startup,
# but allow them to be specified in setenv.sh, in rare case when it is needed.
CLASSPATH=

if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
  . "$CATALINA_BASE/bin/setenv.sh"
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
  . "$CATALINA_HOME/bin/setenv.sh"
fi

所以看起来这是"意图"这样做的方法。