11

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

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

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

如何使用 maven 将类加载器设置为 PARENT_LAST?我知道如何在控制台中做到这一点,但如果有办法使用脚本来做到这一点,那就太好了。

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

谢谢

4

3 回答 3

18

如果您只部署 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 构建 EAR。

在服务器部署期间,这将由 WAS 获取。

于 2014-01-29T12:30:20.130 回答
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()
于 2014-01-29T10:01:48.647 回答
1

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

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

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

于 2014-01-29T04:21:50.990 回答