2009-11-23 105 views
0

我目前正在开发基于Struts2的Web应用程序&在公司制作的框架中将Spring组件与一组层库结合在一起。在eclipse中强制使用Tomcat 5.5的类路径优先级

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

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

人谁设计的公司制造的框架选择暴露blahblah.xml文件通过特定的监听器&的WebApplicationContext定义这样configLocations到春季:

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

目前我看到的只有一个方法来实现(但也许我错了,请让我知道!):在伪造的目录结构中将blahblah.xml的副本从jar中移出,修改副本中某些bean的实现类,然后将该文件夹其中包含webapp类路径中的假结构以便“隐藏”原始结构。

这就是我在Eclipse 5.0中用于开发的TOMCAT 5.5的类路径中能够强制优先的问题。

尽管我在eclipse 3.3下的Tomcat服务器启动配置的Classpath选项卡中添加了包含假结构的目录,但注入的对象仍然是原来的而不是我的。 我想我的文件夹放在TOMCAT运行的类路径中的WEB-INF/lib罐子里,但我没办法抓住它。

任何想法?

回答

1

Tomcat的用于web应用类加载优先级是大致如下:第一引导/系统(JRE/lib,然后server.loader),则web应用程序库(WEB-INF/classes,然后WEB-INF/lib),则公共库(common.loader,然后Tomcat/lib),最后webapp共享库(shared.loader)。

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

请注意,如果不使用某些重定制的类加载器,则无法控制类加载优先级。你只需要知道默认的类加载顺序并明智地使用它。

+0

Wooow它完美的作品;把我的假结构放在src文件夹中完成这项工作!非常感谢你。 – 2009-11-24 17:20:18

+0

不客气。 – BalusC 2009-11-24 17:23:35