WebSphere - 通过 Jython 将模块映射到目标
WebSphere - Map Module to Target through Jython
我们已经将 ear 文件部署到我们的 WebSphere 实例。默认情况下,所有 *.jar & *.war 模块都映射到 jvm.
我们想将所有 *.war 模块也映射到网络服务器。
我创建了以下 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 包含另一个名称 'display name'。当我们执行 -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, target]]]) 来更新目标?
管理脚本控制台不可用,因此我看不到检索已发出的命令的方法。
您可以使用通配符来匹配模块的名称。替换
AdminApp.edit('${p:appName}', ['-MapModulesToServers', [[module, module + ',' + webXml, target]]])
和
AdminApp.edit('${p:appName}', ['-MapModulesToServers', [['.*', module + ',' + webXml, target]]])
我们已经将 ear 文件部署到我们的 WebSphere 实例。默认情况下,所有 *.jar & *.war 模块都映射到 jvm.
我们想将所有 *.war 模块也映射到网络服务器。
我创建了以下 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 包含另一个名称 'display name'。当我们执行 -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, target]]]) 来更新目标?
管理脚本控制台不可用,因此我看不到检索已发出的命令的方法。
您可以使用通配符来匹配模块的名称。替换
AdminApp.edit('${p:appName}', ['-MapModulesToServers', [[module, module + ',' + webXml, target]]])
和
AdminApp.edit('${p:appName}', ['-MapModulesToServers', [['.*', module + ',' + webXml, target]]])