如何在WebSphere中管理ClassPath

Dav*_*veH 7 java websphere

我在Websphere v6.1中的Web模块类路径有问题.

在我的WEB-INF/lib中,我有大量的jar文件,包括xercesImpl.jar和xmlparserv2.jar.我需要两个罐子都存在,但它们似乎互相矛盾.具体来说,每个jar包含一个META-INF/services目录,因此,当我们尝试通过JAXP获取DocumentBuilderFactory的实例时,我们得到的实例取决于这两个jar在类路径中出现的顺序.

总是想使用DocumentBuildFactory的xerces实例,所以我想将xercesImpl.jar推送到类路径的前面.我试图通过在war文件的清单文件中指定一个类路径部分来做到这一点,但我在WAS模块化合物CLass加载器中实际获得的类路径非常奇怪.我似乎得到了WAS提出的一些标准内容,其后是按字母顺序排列的WEB-INF lib的内容,后面是Manifest文件指定的类路径.

如果我根本没有将清单文件放入战争中,我会得到标准的东西,然后是WEB-INF/lib的内容,但是以任意顺序.

我错过了什么?有没有办法让我可以将类路径设置为我想要的?

戴夫

McD*_*ell 4

我认为 WebSphere 是指常规的 J2EE 应用程序服务器(而不是 Community Edition 之类的东西;WebSphere 是应用于许多 IBM 产品的品牌名称)。

我认为你的选择是有限的。由于依赖关系看起来非常明确,因此我更喜欢编程方法,而不是依赖于类路径的变幻莫测(例如显式创建工厂实例而不是依赖 SPI)。

如果这不是一个选项,您可能需要考虑将依赖项之一制作为 EAR 项目实用程序 JAR,并使用 WAR 上的 PARENT_LAST 类加载策略配置 MODULE 类加载。这可以通过浏览器管理控制台(或者如果您使用RAD工具)进行配置。

我要关注的另一件事是 WAS共享库功能(在浏览器管理控制台的“环境”下)。这些可以与服务器应用程序相关联。缺点是这需要更多配置。