我正在研究一个Web应用程序,最近我面临一个ClassCastException问题,发现同一个类已被两个不同的ClassLoader加载。我无法在群集中重现此问题。我只在本地环境中遇到此问题。我使用<Loader delegate =true />
配置了Tomcat Context.xml。这解决了我的ClassCastException问题,使用了正确的ClassLoading机制,如here所述。现在,因为它已经在集群中正常工作,所以我不想在context.xml中进行更改。那么还有其他方法吗?
根据Tomcat文档,
“Loader元素可以嵌套在Context组件中。如果不包含它,将自动创建默认的Loader配置。”
因此,您可以在server.xml中执行此操作,而无需更改Context.xml文件。
<Context path="" docBase="" debug="0">
<Loader delegate="true"/>
</Context>
干杯,
不可以。配置委派的唯一方法是通过嵌套在Loader
元素中的Context
元素。
Loader的标准实现是org.apache.catalina.loader.WebappLoader。它支持属性loaderClass。
自定义实现必须扩展org.apache.catalina.loader.WebappClassLoaderBase
@see https://tomcat.apache.org/tomcat-8.0-doc/config/loader.html