我需要为在Tomcat中运行的应用程序提供RMIClassLoaderSpi
的自定义实现。但是,似乎需要使用System Classloader加载此类。
有没有人知道向Tomcat提供类的好方法,以便可以使用System Classloader加载它?
我知道我可以设置shared.loader和server.loader属性,但据我所知,这些属性不会影响系统类加载器。
如果有人感兴趣,这是强制在RMIClassLoader中使用System Classloader的代码:
Class providerClass =
Class.forName(providerClassName, false,
ClassLoader.getSystemClassLoader());
providerClass
是RMIClassLoaderSpi
的自定义实现的名称。
答案 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
所以看起来这是"意图"这样做的方法。