我可以在ibm-web-bnd.xmi文件中为WebSphere设置类加载器策略吗?

我有一个在WAS 6上运行的JEE应用程序。它需要将类加载器顺序设置为“首先加载应用程序类加载器的类”,并将WAR类加载器策略选项设置为“应用程序的单个类加载器”。

是否可以在EAR文件中指定这些选项,无论是在ibm-web-bnd.xmi文件还是其他文件中,因此管理员无需手动更改这些设置?

由于应用程序是通过自动脚本部署的,并且负责部署的人员不在现场,而且出于其他一些政治原因,这将有很大帮助!

感谢@Matthew Murdoch的回答,我能够提出一个解决方案。 这是它,以防它帮助其他人。

我创建了一个这样的deployment.xml:

         

确保更改要匹配的WAR文件的名称(我的名称为AGS.war)。

我还更改了xmi:id属性中的数字,以确保它们是唯一的,但我不确定它们在应用程序中是否独特是非常重要的。

然后,我通过ANT将deployment.xml文件放在我的EAR文件的根目录中:

      

编辑(2): WebSphere Application Server Toolkit(AST)是一个可用于使用此信息增强EAR文件的工具(请参阅本文档中的“配置增强的EAR”部分)。

编辑(1): 这篇文章建议可以在EAR中的deployment.xml文件中设置’首先加载应用程序类加载器的类’(PARENT_LAST设置)。

如果您可以控制自动部署脚本,则可以执行此操作。 下面是一些wsadmin jython代码,用于将Web模块类加载器顺序设置为“首先加载应用程序类加载器的类”(有趣的是,该设置称为PARENT_LAST,它是在以前版本的管理控制台中标记的内容……)。

wsadmin示例(jython):

 def getWebModule(config, applicationName): webModules = config.list('WebModuleDeployment'). split(system.getProperty('line.separator')) for webModule in webModules: if (webModule.find(applicationName) != -1): return webModule return None applicationName = "" webModule = getWebModule(AdminConfig, applicationName) if (webModule != None): AdminConfig.modify(webModule, "[[classloaderMode PARENT_LAST]]") AdminConfig.save() else: print "Error: Cannot find web module for application: " + applicationName 

看看这个链接。 根据您的服务器版本,有不同的方法使用Jython设置类加载器策略 – http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=%2Fcom.ibm.websphere.express。 DOC%2Finfo%2Fexp%2Fae%2Frxml_7libapp4.html

与pkaeding的答案类似,我发现如下,并不是特定于.war的名称,但在应用于.ear文件中的默认.war时非常有用。 (.ear文件中包含一个.war文件只有.war,因此在条目中不需要命名.war。)这种方法可能适用于您可能需要重命名.war的情况。项目稍后因某种原因,所以您不必担心更新deployment.xml文件。 我发现将deployment.xml文件隐藏在单元格引用目录中; dunno如果文件放在目录级别META-INF并且没有更深的时候显示正常。

在我的特定情况下,我在我的.ear项目中找到了deployment.xml

\ META-INF \ ibmconfig \ cells \ defaultCell \ applications \ defaultApp \ deployments \ defaultApp \

该文件的内容看起来很像:

      

这条线:

  

最初阅读:

  

请注意,没有提及任何.war。 正如pkaeding所提到的,你不应该期望各种id号对你来说是一样的。