gpt4 book ai didi

eclipse - 在 eclipse 下使用 Tomcat 5.5 强制类路径优先级

转载 作者:行者123 更新时间:2023-11-28 23:08:59 24 4
gpt4 key购买 nike

我目前正在开发一个基于 Struts2 和 Spring 组件的 Web 应用程序,并在公司制作的框架中结合了一组层库。

这些库通过嵌入在提供的 jar 文件中的 blahblah.xml 文件公开了一组 spring bean。

我需要用我自己的类替换通过此类 bean 声明公开的一些实现类,以便在提供的处理中添加额外的东西。

设计公司框架的人选择通过定义此类 configLocations 的特定 Listener 和 WebApplicationContext 将 blahblah.xml 文件公开给 Spring:

ConfigurableWebApplicationContext cwac = new XmlWebApplicationContext();
cwac.setConfigLocation("classpath*:<somePath>/blahblah.xml");

目前我只看到一种方法来完成这项工作(但也许我错了,请告诉我!):从 jar 中的假目录结构中复制 blahblah.xml,修改实现在副本中添加一些 bean 的类,然后将包含假结构的文件夹放入 webapp 类路径中,以“隐藏”原始结构。

这就是导致我能够在我用于在 eclipse 3.3 下进行开发的 TOMCAT 5.5 的类路径中强制优先于此的问题。

虽然我在eclipse 3.3 下的Tomcat Server 的Launch Configuration 的Classpath 选项卡中添加了包含假结构的目录,但注入(inject)的对象仍然是原始对象,而不是我的。我猜我的文件夹放在TOMCAT运行类路径中的WEB-INF/lib jars之后,但我没有办法抓取它。

有什么想法吗?

最佳答案

Tomcat对webapps的类加载优先级大致如下:首先是bootstrap/system(JRE/lib,然后是server.loader),然后是webapp libraries(WEB-INF/classes,然后是WEB-INF/lib),然后是公共(public)库(common.loader,然后是Tomcat/lib) 最后是 webapp 共享库 (shared.loader)。

我首先将此文件添加到 WEB-INF/classes(在 Eclipse 中:只需将文件拖放到 src 文件夹中,它会自动被考虑在内) .

请注意,如果没有一些繁重的自定义类加载器,您将无法控制类加载的优先级。您只需要知道默认的类加载顺序并明智地使用它即可。

关于eclipse - 在 eclipse 下使用 Tomcat 5.5 强制类路径优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1786525/

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