gpt4 book ai didi

java - 我是否需要扩展 ClassLoader 来重定向 Web 应用程序资源加载?

转载 作者:行者123 更新时间:2023-11-30 11:45:02 25 4
gpt4 key购买 nike

我的问题有两个方面。首先,我将解释问题,其次,假设解决方案是实现类加载器,那么如何在 Web 应用程序上执行此操作。

我的问题是:我们公司正在使用另一家公司制作的框架。它使用 xml 文件生成网页,这些 xml 文件位于另一个库(jar 文件)中。它并不意味着是动态的,因为这些库经常(每周?)生成,但它们决定了有多少字段,它收集什么类型的信息(日期时间、组合框等),等等。

现在我的公司提出了一个问题,是否可以动态移动这些字段(动态,我的意思是理想情况下,您可以刷新页面并查看对布局所做更改的效果)。我做了一些初步测试,发现修改 xml 确实可以在网页上产生预期的效果,但是,由于这些 xml 文件位于 jars 中,这意味着我有两种可能性:

  1. 创建一个工具来修改我的 Web 应用程序范围之外的 jar,尽管这显然意味着它绝对不能是动态的。此外,为了管理该工具,我必须在 Web 应用程序之外创建一个界面。此外,我似乎无法摆脱这样一种印象,即这是一种非常骇人听闻的方法,我应该不惜一切代价避免使用这种解决方案。
  2. 我实现了一个类加载器(特别是 getResourceAsStream),当我看到调用加载一个这样的 xml 文件时,我没有执行默认行为,而是根据原始文件生成 xml 文件,修改我需要的信息,然后将资源返回给调用者(在本例中是第三方框架)。

第一个问题是,#2 是我的最佳选择还是存在其他选择(或者我应该坚持#1)?

我的第二个问题是,假设我应该实现自己的类加载器,我如何才能在我的 Web 应用程序上做到最好?我正在使用 Tomcat 7,但如果可能的话,我希望解决方案独立于我正在使用的 Web 容器。

如有任何帮助,我们将不胜感激!

最佳答案

您可以简单地将 jar 分解到类路径上的目录中,然后就地动态更新 XML 文件。这不会考虑应用程序中的任何内部缓存(如果有的话,那是另一个问题),但它实现起来很简单,不会让您陷入充满恶作剧的 ClassLoader 业务。

关于java - 我是否需要扩展 ClassLoader 来重定向 Web 应用程序资源加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10494725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com