我已经转换了要使用Maven而不是RAD内置工具构建和部署的应用程序。大部分进展顺利,但最后一个“陷阱”是应用程序需要“父上层/应用程序”的类加载器策略。我想自动执行此操作,因为当前,当我使用WAS plugin for Maven时,它似乎已完全卸载并重新安装了该应用程序,因此,每次代码更改和重新部署应用程序时,我都必须经过管理控制台。如果我可以将类加载器设置内置到已部署的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"/>
...
该应用程序中的所有模块都具有诸如
EJBModuleDeployment_1460348645719
之类的ID,我想它们是在该应用程序最初通过RAD发布到WAS时创建的。如果我将新的经过Maven处理的项目交给新开发人员,他们是否可以使用此deployment.xml
文件,或者该文件中是否存在特定于通常由RAD管理的特定WAS实例的部分?另外,如果以后再向应用程序添加更多模块,我将如何使用Maven生成新的模块ID?我是否可以像
EJBModuleDeployment_123
那样构成一个ID,或者这真的应该由RAD / WAS管理吗?我还想知道我是否可以编写Jython脚本来做到这一点并以某种方式将其与Maven集成在一起,但是我不确定这是否行得通甚至是否有必要。 最佳答案
我通常使用Maven部署应用程序,然后运行wsadmin脚本(Jython)来更改诸如此类的配置信息(类加载器策略,共享库等)。
我通过Jenkins作业运行maven作业和wsadmin脚本,以便它们一起执行。