【发布时间】:2012-11-07 09:34:29
【问题描述】:
我想使用独立的 wsadmin 执行部署后脚本。它应该删除配置文件(/profile/temp /profile/myCacheFolder)上的所有缓存。我的问题是,是否可以使用 wsadmin 执行此操作?如果有怎么办?我可以以某种方式使用 AdminConfig.deleteDocument 或类似的东西吗?
谢谢
【问题讨论】:
标签: deployment websphere jython wsadmin
我想使用独立的 wsadmin 执行部署后脚本。它应该删除配置文件(/profile/temp /profile/myCacheFolder)上的所有缓存。我的问题是,是否可以使用 wsadmin 执行此操作?如果有怎么办?我可以以某种方式使用 AdminConfig.deleteDocument 或类似的东西吗?
谢谢
【问题讨论】:
标签: deployment websphere jython wsadmin
使用AntAgent MBean,您可以上传ant脚本,然后在远程节点上调用它:
from java.lang import String
import jarray
fileContent = '<project name="cleanup" default="cleanup"><target name="cleanup"><delete dir="${user.install.root}/temp" /><delete dir="${user.install.root}/wstemp" /></target></project>'
antAgent = AdminControl.makeObjectName(AdminControl.queryNames('WebSphere:*,type=AntAgent,process=dmgr'))
str = String(fileContent)
bytes = str.getBytes()
AdminControl.invoke_jmx(antAgent, 'putScript', [String('cleanup.xml'),bytes], jarray.array(['java.lang.String', '[B'], String))
AdminControl.invoke_jmx(antAgent, 'invokeAnt', [jarray.array([], String), String('cleanup.xml'), String('cleanup')], jarray.array(['[Ljava.lang.String;', 'java.lang.String', 'java.lang.String'], String))
fileContent 变量是您的 Ant 脚本,您可能需要对其进行更多调整,尤其是在 Windows 上以处理被阻止的文件/目录。
【讨论】:
wsadmin.sh 可以使用 Jython 启动,Jython 是带有 Java 的 Python。
所以你可以使用 Python 默认类:
import os
os.rmdir('/a/b/c')
如果你在 Unix 上:
import os
os.sys('rm -r /a/b/c') or
os.system('rm -r /a/b/c')
上述命令将删除 /a/b 中的目录 'c'。 使用 os.remove('filename') 删除文件。
【讨论】: