gpt4 book ai didi

java - 在 Tomcat 中使用系统类加载器加载类

转载 作者:行者123 更新时间:2023-11-28 23:55:54 24 4
gpt4 key购买 nike

我需要为在 Tomcat 中运行的应用程序提供 RMIClassLoaderSpi 的自定义实现。不过这个类好像需要用System Classloader来加载。

有谁知道向 Tomcat 提供类以便可以使用系统类加载器加载它的好方法吗?

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

如果有人感兴趣,这是强制在 RMIClassLoader 中使用系统类加载器的代码:

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

providerClass 是我自定义实现的 RMIClassLoaderSpi 的名称。

最佳答案

仔细研究一下,我似乎可以修改 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

所以看起来这是“预期”的方式。

关于java - 在 Tomcat 中使用系统类加载器加载类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25683974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com