我想使用独立的 wsadmin 执行部署后脚本。它应该删除配置文件(/profile/temp /profile/myCacheFolder)上的所有缓存。我的问题是,是否可以使用 wsadmin 执行此操作?如果有怎么办?我可以以某种方式使用 AdminConfig.deleteDocument 或类似的东西吗?
谢谢你
我想使用独立的 wsadmin 执行部署后脚本。它应该删除配置文件(/profile/temp /profile/myCacheFolder)上的所有缓存。我的问题是,是否可以使用 wsadmin 执行此操作?如果有怎么办?我可以以某种方式使用 AdminConfig.deleteDocument 或类似的东西吗?
谢谢你
使用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') 删除文件。