如何创建一个使用另一个库的“leech”Tomcat应用程序

时间:2012-11-28 10:19:00

标签: java java-ee tomcat classloader

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

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

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

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

我可能会获得相同的效果复制库,但它不是一个优雅的解决方案,看看这将要求主题和测试器已经由Tomcat已经从他们的war文件扩展。

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

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

注意: 我应该补充说,Subject不仅仅是任何通用应用程序,而是我们公司实施的特定应用程序,因此当Subject应该独立于Tester工作时,这并不意味着如果它有助于这项工作,我无法修改主题。

1 个答案:

答案 0 :(得分:1)

我认为你正在创造一个弗兰肯斯坦的怪物。您可以通过实现自定义类加载器来存档它,但这至少需要了解tomcat提取 subject 的位置。除此之外,当重新部署 subject 时,您很可能会遇到问题。你希望进行什么样的测试?也许对你计划做的事情有一种更简单和更健全的方法。