java - 如何创建一个使用另一个库的 "leech"Tomcat 应用程序

标签 java jakarta-ee tomcat classloader

熟悉Tomcat的传统类加载系统:

    Bootstrap
        |
     System
        |
     Common
     /     \
Webapp1   Webapp2 ...

我正在为部署在 Tomcat 6 上的现有 Web 应用程序编写测试器 Web 应用程序。理想情况下,使用上下文参数指示要测试的应用程序的上下文路径(我们称之为主题),然后它将在它自己之前直接从主题加载库。所以我希望获得的树是(不是为了胆小的人,你已经被警告过):

    Bootstrap
        |
     System
        |
     Common
     /     \
Subject   Webapp2 ...
   |
Tester

我可能可以通过复制库来获得相同的效果,但是这不是一个优雅的解决方案,因为这需要 Tomcat 已经从它们的 war 文件中扩展了 Subject 和 Tester。

我的问题是:假设 Subject 已经存在并且它独立于 Tester 工作,有没有一种方法可以通过简单地在 webapp 目录中添加 war 文件并启动 Tomcat(理想情况下不修改 Tomcat 配置,但可以理解这可能是不可能的)?我的后续问题是,这种技术(安全性或其他方面)是否有我应该注意的缺点?

我很感激任何反馈,因为我正在尝试决定这是否是一个可行的想法,或者我是否正在创造弗兰肯斯坦的怪物。

注意: 我可能应该补充一点,Subject 不仅仅是任何通用应用程序,而是我们公司实现的特定应用程序,因此虽然 Subject 应该独立于 Tester 工作,但这并不意味着如果它有助于这项工作,我不能修改主题。

最佳答案

我认为您正在创造科学怪人的怪物。您可以通过实现自定义类加载器来存档它,但这至少需要了解 tomcat 在何处提取subject。除此之外,当 subject 被重新部署时,您很可能会遇到问题。您希望进行什么样的测试?对于您计划执行的操作,也许有更简单、更可靠的方法。

关于java - 如何创建一个使用另一个库的 "leech"Tomcat 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13602729/

相关文章:

java - 在 ListView 中添加 onClickListener

java - 无法使用 cdi : NullPointerException 注入(inject) bean

java - 在 GraalVM 中安装 R 包的问题

java - Tomcat:我搞砸了我的 jndi 连接设置还是什么?

tomcat - 具有数据库更改控制的持续部署工具

ajax - tomcat 是否有任何 mod_proxy 等效项?

使用 JAXB 将 Java 转换为 XML

Java EE EJB 3.0 玻璃鱼

java - OneToMany JPA 注释

html - 样式表未发送到浏览器