仿Tomcat应用隔离机制开发Openfire插件隔离功能笔记

本文介绍了如何基于Tomcat的源码实现Openfire插件的隔离功能,解决在集群环境中不同插件间类加载的问题。通过分析Tomcat的WebappClassLoaderBase和WebResourceRoot类,探讨了类加载流程,提出了一种类隔离的解决方案。
摘要由CSDN通过智能技术生成

本文是基于 git上的tomcat源码 https://github.com/apache/tomcat  版本e5e601c20a12bf67f1e913ad99747d716117ff1a进行编写


因为需要给开源项目Openfire提一个PR功能为可以任意切换集群的支持插件,在开发过程中发现在同一个JVM中

使用ClassLoader加载同样路径、名称的类时,ClassLoader会以第一次加载的类为基准,无论加载几次,后续使用loadClass方法都只会加载同一个类

而Openfire在启动集群时,会默认加载org.jivesoftware.openfire.plugin.util.cache.ClusteredCacheFactory这个类的实现对象,

该实现类对象在不同的集群支持插件中,虽然可以通过配置更改这个实现对象的路径,但是效果就不是特别完美了。

所以笔者想到了运用Tomcat的应用加载机制,想实现插件与插件之间的相互类隔离的功能。



在阅读Tomcat时发现Tomcat主要基于WebappClassLoaderBase这个类进行资源路径的加载

该类中有一个关键成员对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值