我的 Websphere v6.1 中的 Web 模块类路径有问题。
在我的 WEB-INF/lib 中,我有大量的 jar 文件,其中包括 xercesImpl.jar 和 xmlparserv2.jar。我需要两个罐子都存在,但它们似乎相互冲突。具体来说,每个 jar 都包含一个 META-INF/services 目录,因此,当我们尝试通过 JAXP 获取 DocumentBuilderFactory 的实例时,我们获取的实例取决于这两个 jar 在类路径中出现的顺序。
I always想要使用DocumentBuildFactory的xerces实例,所以我想将xercesImpl.jar推到类路径的前面。我尝试通过在 War 文件的清单文件中指定类路径部分来实现此目的,但是我在 WAS 模块复合类加载器中实际获得的类路径非常奇怪。我似乎得到了一些 WAS 放置的标准内容,后面是按字母顺序排列的 WEB-INF lib 的内容,后面是 Manifest 文件指定的类路径。
如果我根本不将清单文件放入战争中,我会得到标准内容,然后是 WEB-INF/lib 的内容,但顺序是任意的。
我缺少什么?有没有一种方法可以将类路径设置为我想要的?
Dave
我认为 WebSphere 是指常规的 J2EE 应用程序服务器(而不是 Community Edition 之类的东西;WebSphere 是应用于许多 IBM 产品的品牌名称)。
我认为你的选择是有限的。由于依赖关系看起来非常明确,因此我更喜欢编程方法,而不是依赖于类路径的变幻莫测(例如显式创建工厂实例而不是依赖 SPI)。
如果这不是一个选项,您可能需要考虑将依赖项之一制作为 EAR 项目实用程序 JAR,并使用 WAR 上的 PARENT_LAST 类加载策略配置 MODULE 类加载。这可以通过浏览器管理控制台(或通过RAD http://en.wikipedia.org/wiki/IBM_Rational_Application_Developer工具(如果您使用它)。
我要看的另一件事是 WAS共享库 http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.base.doc/info/aes/ae/tcws_sharedlib_create.html?resultof=%22%73%68%61%72%65%64%22%20%22%73%68%61%72%65%22%20%22%6c%69%62%72%61%72%69%65%73%22%20%22%6c%69%62%72%61%72%69%22%20功能(在环境在浏览器管理控制台中)。这些可以是与服务器相关 http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.base.doc/info/aes/ae/tcws_sharedlib_server.html?resultof=%22%73%68%61%72%65%64%22%20%22%73%68%61%72%65%22%20%22%6c%69%62%72%61%72%69%65%73%22%20%22%6c%69%62%72%61%72%69%22%20 or 应用 http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.base.doc/info/aes/ae/tcws_sharedlib_app.html?resultof=%22%73%68%61%72%65%64%22%20%22%73%68%61%72%65%22%20%22%6c%69%62%72%61%72%69%65%73%22%20%22%6c%69%62%72%61%72%69%22%20。缺点是这需要更多配置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)