我已经使用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?我可以只编写一个ID,例如EJBModuleDeployment_123
,还是应该由RAD / WAS管理?我也想知道我是否可以编写一个Jython脚本来实现这一点并以某种方式将其与Maven集成,但我不确定这是否有用或是否有必要。
答案 0 :(得分:1)
我通常使用maven部署我的应用程序,然后运行wsadmin脚本(Jython)来更改配置信息,例如(类加载器策略,共享库等)。
我通过Jenkins作业运行maven作业和wsadmin脚本,以便它们一起执行。