如何设置java类加载器PARENT_LAST

时间:2014-01-29 04:10:47

标签: maven websphere classloader websphere-6.1 wsadmin

我有一个spring mvc web应用程序,我需要更改类加载器。我需要将类加载器更改为等于PARENT_LAST。我正在使用WAS 6.1并且已经有一个jacl脚本来自我之前可以复制的Web应用程序来完成这项工作。

在最后一个应用程序中使用了Apache ant,他们所做的是使部署依赖于运行jacl脚本。

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

如何使用maven将类加载器设置为PARENT_LAST?我知道如何在控制台中执行此操作,但如果有一种方法可以使用脚本编写,那将很不错。

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

感谢

3 个答案:

答案 0 :(得分:16)

如果您只是部署WAR文件本身,则无法控制它,但如果您在EAR文件中有WAR文件,则可以使用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构建EAR正常。

在服务器部署期间,这将由WAS接收。

答案 1 :(得分:3)

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

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

dep = AdminConfig.getid('/Deployment:app_name/')
depObject = AdminConfig.showAttribute(dep, 'deployedObject')
classldr = AdminConfig.showAttribute(depObject, 'classloader')
AdminConfig.modify(classldr, [['mode', 'PARENT_LAST']])
AdminConfig.save()

答案 2 :(得分:1)

Websphere使用deployment.xml文件来管理ear文件中每个模块的部署设置。您可以在以下路径中更改deployment.xml中的类加载器设置:

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

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