我正在尝试将战争部署到IBM Websphere Application Server Community Edition(WASCE)3.0.0.3。我在WASCE 3.0.0.3附带的罐子和罐子来自我们的应用程序依赖项之间有一些罐子冲突的问题。最后,我通过在geronimo-web.xml中使用below属性来强制WASCE从我的应用程序加载jar来解决问题。
<import-package>!the.conflicting.jars</import-package>
但是,我想强制WASCE始终从我的应用程序中获取jar,即反向默认的类加载器行为以从应用程序首先加载。在这种情况下要更改的正确配置是什么?
经过一些搜索,根据link,WASCE 3.0基于Geronimo 3.0。我发现在geronimo-web.xml中设置<inverse-classloading>
可能会有所帮助。但在Apache Geronimo 3.0 website下面的两个文档中,提到Geronimo 3.0上不再提供此功能
,它说:
<{3>}中的反向类加载 Geronimo 3.0不支持部署计划中的元素。
,
<sys:environment>
元素包含以下元素:...
<inverse-classloading>
元素可用于指定要为此模块反转标准类加载器委派。 Geronimo类加载器委派遵循Java EE 5规范,正常行为是在检查当前类加载器之前从父类加载器(如果可用)加载类。 ...... ...... (3.0不支持,请改用<import-package/>
)
因此,如果<inverse-classloading>
不再可用,那么WASCE 3.0.0.3中该属性的等价物是什么?或者我应该如何使用<import-package/>
为所有重复的罐子做到这一点?
答案 0 :(得分:0)
在您提到的链接中,您将找到以下部分
<强>
<sys:environment>
强>
<sys:environment>
XML元素使用Geronimo System命名空间,该命名空间用于指定公共库和模块范围服务的公共元素,并在此处记录:http://geronimo.apache.org/schemas-3.0/docs/geronimo-module-1.2.xsd.html
该元素包含以下元素:
<moduleId>
元素用于提供Geronimo服务器中部署的Web应用程序的配置名称。它包含groupId,artifactId,版本和模块类型的元素。模块ID通常在四个组件之间用斜杠打印,例如GroupID / ArtifactID / Version / Type。
<dependencies>
元素用于提供Web模块所依赖的配置和第三方库。这些配置和库通过Geronimo类加载器层次结构提供给Web模块。
<bundle-activator>
元素用于在Web应用程序的清单文件中创建Bundle-Activator标头。它指定在Geronimo服务器中部署的Web应用程序的入口点。
<bundle-classPath>
元素用于在Web应用程序的清单文件中创建Import-Package标头。它包含一个目录列表或嵌入式jar文件,它们也称为bundle资源,并扩展了Web应用程序的类路径。
<import-package>
元素用于在Web应用程序的清单文件中创建Import-Package标头。它指定在Web应用程序启动之前要解析的包列表。使用<import-package>!packagename</import-package>
覆盖服务器中的特定包。
<export-package>
元素用于在Web应用程序的清单文件中创建Export-Package标头。它指定了要导出的包列表。使用
<require-bundle>
元素在Web应用程序的清单文件中创建Require-Bundle标头。它指定要绑定到的包的列表,无论它们的包是什么。
<dynamic-import-package>
元素用于在Web应用程序的清单文件中创建DynamicImport-Package标头。它指定了要动态导入的打包列表,尤其是在类加载期间。
基本上,你需要添加以下指令,即
<sys:import-package>!package-class-name-here*</sys:import-package>
节中的 <sys:environment>
。通常在Application Context-Root指令之前。
如您所知,这是在应用程序WAR / EAR中嵌入的geronimo-web.xml中 - 如链接中所述