我的问题有两个。首先,我将解释这个问题,其次,假设解决方案是实现一个类加载器,那么如何在 Web 应用程序上执行此操作。
我的问题是:我们公司正在使用另一家公司制作的框架。它使用 xml 文件生成网页,这些 xml 文件位于另一个库(jar 文件)中。它并不意味着是动态的,因为这些库是经常生成的(每周?),但它们决定了有多少字段,它收集什么类型的信息(日期时间、组合框等)等等。
现在我的公司提出了一个问题,是否可以动态地移动这些字段(通过动态,我的意思是理想情况下您可以刷新页面并查看对布局所做更改的效果)。我做了一些初步测试,发现修改 xml 确实会在网页上产生预期的效果,但是,由于这些 xml 文件位于 jars 中,这意味着我有两种可能性:
- 创建一个在我的 Web 应用程序范围之外修改 jar 的工具,尽管这显然意味着它绝对不能是动态的。此外,为了管理该工具,我必须在 Web 应用程序之外创建一个界面。此外,我似乎无法摆脱这样一种印象,即这是一种令人难以置信的 hacky 方法,我应该不惜一切代价避免这种解决方案。
- 我实现了一个类加载器(特别是
getResourceAsStream
),当我看到加载一个这样的 xml 文件的调用,而不是执行默认行为时,我根据原始生成 xml 文件,根据需要修改信息,然后将资源返回到调用者(在这种情况下是第三方框架)。
第一个问题是,#2 是我最好的选择还是存在其他选择(或者我应该坚持 #1)?
我的第二个问题是,假设我应该实现自己的类加载器,我怎样才能最好地在我的 Web 应用程序上做到这一点?我正在使用 Tomcat 7,但如果可能的话,我希望解决方案独立于我正在使用的 Web 容器。
任何帮助将不胜感激!