2014-09-05 27 views
0

我需要爲我在Tomcat中運行的應用程序提供RMIClassLoaderSpi的自定義實現。但是,似乎這個類需要使用System Classloader加載。在Tomcat中使用System Classloader加載課程

有誰知道提供一個類給Tomcat的好方法,使得它可以使用System Classloader加載嗎?

我知道我可以設置shared.loader和server.loader屬性,但據我所見,這些不會影響系統類加載器。

如果任何人的興趣,這是被強制使用系統類加載器的RMIClassLoader代碼:

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

哪裏providerClass是我的RMIClassLoaderSpi自定義實現的名稱。

回答

0

再仔細看看,我似乎可以修改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 

所以看起來這是在 「預期」 的方式來做到這一點。

相關問題