WebSphere-通过Jython定位的Map模块

问题描述 投票:0回答:1

我们已经将一个ear文件部署到我们的WebSphere实例。默认情况下,所有* .jar和* .war模块都映射到jvm。

我们也希望将所有* .war模块也映射到Web服务器。

我创建了以下jython脚本,将其他模块映射到Web服务器:

modules = AdminApp.listModules('${p:appName}', '-server')
splitted = modules.splitlines()

for moduleLine in splitted:
  print "Mapping module: " + moduleLine
  appName, moduleUri, target = moduleLine.split("#")

  print appName
  print moduleUri
  print target

  if moduleUri.find('.war') >= 0:
    print "It's a war: " + moduleUri
    module, webXml = moduleUri.split("+")
    print module
    print webXml
    AdminApp.edit('${p:appName}', ['-MapModulesToServers', [[module, module + ',' + webXml, target]]])

当模块的名称与uri中引用的名称相同时,以上脚本起作用。但是,在某些情况下,web.xml包含另一个名称作为“显示名称”。当我们执行-MapModulesToServers时,似乎要看模块的显示名称,而不是uri。

例如:

在WebSphere控制台中,我们将有以下行:

Module       URI                                             Module type
Demo         be.fictive.company.demo.war,WEB-INF/web.xml     Web Module

'AdminApp.listModules'方法返回uri名称(be.fictive.company.demo.war),而我需要模块的名称(Demo)。

我是否缺少某些内容,或者还有另一种方法来检索模块名称,所以我可以使用AdminApp.edit('$ {p:appName}',['-MapModulesToServers',[[module,module +',' + webXml,目标]]])更新目标?

管理脚本控制台不可用,所以我没有找到检索已发出命令的方法。

websphere jython websphere-8
1个回答
0
投票

您可以使用通配符来匹配模块的名称。替换

AdminApp.edit('$ {p:appName}',['-MapModulesToServers',[[module,module +','+ webXml,target]]])]

with

AdminApp.edit('$ {p:appName}',['-MapModulesToServers',[['。*',module +','+ webXml,目标]]]]]]

© www.soinside.com 2019 - 2024. All rights reserved.