2

我已经将一个应用程序转换为使用 Maven 而不是 RAD 的内置工具来构建和部署。它大部分进展顺利,但最后一个“陷阱”是应用程序需要“父最后/应用程序”的类加载器策略。我想自动执行此操作,因为目前,当我使用Maven 的 WAS 插件时,它似乎完全卸载并重新安装应用程序,因此每次代码更改和应用程序重新部署时我都必须通过管理控制台。如果我可以将类加载器设置内置到已部署的 EAR 中,工作会进行得更快。

据我所知,类加载器配置在 RAD 管理的文件“deployment.xml”中控制,该文件位于我的 EAR 项目的“META-INF/ibmconfig”文件夹中。我猜我可以在我的 EAR 中包含这个目录结构,当它部署到 WebSphere 时它会正常工作,但我更关心这个文件的内容。它看起来像这样:

<?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_1460348645719">
  <deployedObject xmi:type="appdeployment:ApplicationDeployment" xmi:id="ApplicationDeployment_1460348645719" startingWeight="10" warClassLoaderPolicy="SINGLE">
    <modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1460348645719" startingWeight="10000" uri="MyWarProject1.war"/>
    <modules xmi:type="appdeployment:EJBModuleDeployment" xmi:id="EJBModuleDeployment_1460348645719" startingWeight="5000" uri="MyEJBProject1.jar"/>
    <modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1460348645720" startingWeight="10000" uri="MyWarProject2.war"/>
    <classloader xmi:id="Classloader_1460348645719" mode="PARENT_LAST"/>
   ...

应用程序中的所有模块都有 ID,例如EJBModuleDeployment_1460348645719,我猜这些是在应用程序最初通过 RAD 发布到 WAS 时创建的。如果我将新的 Maven 化项目提供给新开发人员,他们是否能够使用此deployment.xml文件,或者其中是否有特定于通常由 RAD 管理的特定 WAS 实例的部分?

另外,如果我稍后向应用程序添加更多模块,我将如何使用 Maven 生成新的模块 ID?我可以只编一个 ID,EJBModuleDeployment_123或者这真的应该由 RAD/WAS 管理吗?我还想知道是否可以编写一个 Jython 脚本来执行此操作并以某种方式将其与 Maven 集成,但我不确定这是否可行,或者是否有必要。

4

1 回答 1

1

我通常使用 maven 部署我的应用程序,然后运行 ​​wsadmin 脚本 (Jython) 来更改诸如此类的配置信息(类加载器策略、共享库等)。

我通过 Jenkins 作业一起运行 maven 作业和 wsadmin 脚本,以便它们一起执行。

于 2013-10-09T23:38:23.457 回答