Maven 如何最后设置java类装入器父级

Maven 如何最后设置java类装入器父级,maven,websphere,classloader,websphere-6.1,wsadmin,Maven,Websphere,Classloader,Websphere 6.1,Wsadmin,我有一个SpringMVCWeb应用程序,需要更改其上的类加载器。我需要将类加载器更改为等于PARENT_LAST。我使用的是WAS6.1,并且已经有一个jacl脚本,它来自以前的web应用程序,我可以复制它来完成这项工作 在上一个应用程序中使用了ApacheAnt,他们所做的是使部署依赖于运行jacl脚本 在我的新web应用程序中,我使用maven install创建一个war文件,并将该war文件部署到我的应用程序服务器 如何使用maven将类装入器设置为PARENT_LAST?我知道如何在

我有一个SpringMVCWeb应用程序,需要更改其上的类加载器。我需要将类加载器更改为等于PARENT_LAST。我使用的是WAS6.1,并且已经有一个jacl脚本,它来自以前的web应用程序,我可以复制它来完成这项工作

在上一个应用程序中使用了ApacheAnt,他们所做的是使部署依赖于运行jacl脚本

在我的新web应用程序中,我使用maven install创建一个war文件,并将该war文件部署到我的应用程序服务器

如何使用maven将类装入器设置为PARENT_LAST?我知道如何在控制台中完成这项工作,但如果有一种方法可以使用脚本完成这项工作,那就太好了

此外,此设置也将放置在war文件中的某个位置,以便在部署应用程序时获取该设置。这个问题源于我对jacl脚本如何工作缺乏了解


谢谢,Websphere使用deployment.xml文件来管理ear文件中每个模块的部署设置。您可以通过以下路径更改deployment.xml中的classloader设置:

/MyTestEAR/META-INF/ibmconfig/cells/defaultCell/applications/defaultApp/deployments/defaultApp/deployment.xml


我不知道如何在Maven中配置它。

AFAIK在组装过程中无法为
PARENT\u LAST
预配置WAR。类加载策略是在部署期间指定的,因此设置它的方式取决于应用程序的部署方式

使用脚本更改策略非常简单。使用
wsadmin
工具运行脚本。下面的Jython代码段完成了这项工作。它可以很容易地转换为Jacl

dep=AdminConfig.getid('/Deployment:app_name/'))
DepoObject=AdminConfig.showAttribute(dep'deployedObject')
classldr=AdminConfig.showAttribute(deObject,“classloader”)
modify(classldr,['mode','PARENT\u LAST']]
AdminConfig.save()

如果仅部署WAR文件本身,则无法控制此操作,但如果WAR文件位于EAR文件中,则可以使用deployment.xml解决方案。deployment.xml文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<appdeployment:Deployment xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:appdeployment="http://www.ibm.com/websphere/appserver/schemas/5.0/appdeployment.xmi" xmi:id="Deployment_1347529484613">
  <deployedObject xmi:type="appdeployment:ApplicationDeployment" xmi:id="ApplicationDeployment_1347544766353" startingWeight="99" warClassLoaderPolicy="SINGLE">
    <modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1347543866613" startingWeight="1" uri="YourWebApp.war" classloaderMode="PARENT_LAST"/>
    <classloader xmi:id="Classloader_1347543866613" mode="PARENT_LAST"/>
  </deployedObject>
</appdeployment:Deployment>

完成后,您需要做的就是将文件添加到EAR项目构建的正确位置,假设您使用的是
src/main/application
,即
src/main/application/META-INF/ibmconfig/cells/defaultCell/applications/defaultApp/deployments/defaultApp/deployment.xml,并使用Maven作为正常


在服务器部署期间,WAS将对此进行检查。

不完全确定删除
java
标记是否合理?谢谢,这是一个非常好的答案。我现在明白了,如果我想改变设置,我需要建立一个耳朵,而不是一场战争。真不幸。但是我想另一种方法是在部署正确后在web管理控制台中手动设置。许多(但不是所有)特定于部署的设置(WAS有自己的部署描述符)驻留在EAR文件中。我们发现,部署EAR文件而不仅仅是WAR文件对我们更有利,这主要是因为它易于部署。要使
PARENT_LAST
应用于内部WAR(如果部署了EAR),请添加
AdminConfig.modify(deobject,[['warClassLoaderPolicy',SINGLE']]作为第三行。