IBM Websphere - 用于自动部署的 wsadmin 脚本

IBM Websphere - wsadmin script for AutoDeployment

你能看看下面的问题吗?

import time
node = AdminConfig.getid('/Node:node111/')
print node
print "sss" +AdminControl.queryNames('WebSphere:type=Server,*')
cell = AdminControl.getCell()
print " Cell name is --> "+ cell
warLoc='/home/test/PA_Test.war'
appName='PA_Test'
cellName=AdminControl.getCell()
print cellName
nodeName=AdminControl.getNode()
print "hello"
print " nodeName is --> "+ nodeName
appManager=AdminControl.queryNames('cell='+cellName+',node=node111,type=ApplicationManager,process=WebSphere_Portal,*')
print appManager
application = AdminConfig.getid("/Deployment:"+appName+"/")
print 'printing application name in next line'
print application
len(application)
print application
len(application)
var1 = len(application)
if var1:
   print "Application exists"
   print "before uninstall"
   AdminApp.uninstall('PA_Test')
   print "after uninstall"
   AdminConfig.save()
else:
   print "Application doesnot exist"
print "Before install"
print AdminApp.install(warLoc,'[-target default -usedefaultbindings -defaultbinding.virtual.host default_host]')
print "Done from My Side"
print "After install"
AdminConfig.save()
time.sleep(30)
AdminControl.invoke(appManager , 'startApplication',appName)
print "The script is completed."    

Below is the successful message:

 ADMA5016I: Installation of PA_Test.war154ed2178ed started.
 ADMA5058I: Application and module versions are validated with versions of deployment targets.
 ADMA5005I: The application PA_Test.war154ed2178ed is configured in the WebSphere Application Server repository.
 ADMA5005I: The application PA_Test.war154ed2178ed is configured in the WebSphere Application Server repository.
 ADMA5081I: The bootstrap address for client module is configured in the WebSphere Application Server repository.
 ADMA5053I: The library references for the installed optional package are created.
 ADMA5001I: The application binaries are saved in /opt/IBM/WebSphere/wp_profile/wstemp/Script154ed215c59/workspace/cells/inpudingpwmtst1Cell/applications/PA_Test.war154ed2178ed.ear/PA_Test.war154ed2178ed.ear

现在我可以部署 war,但文件名正在更改为 PA_Test。war154ed2178ed.ear 但它实际上应该是 PA_Test.ear。你能帮忙改变当前的脚本吗?

简答:

print AdminApp.install(warLoc, [
    '-appname', 'PA_Test.ear',
    '-target', 'default',
    '-usedefaultbindings',
    '-defaultbinding.virtual.host', 'default_host'
])

更短的一个:使用WDR

您需要一个应用程序清单文件PA_Test.wdra:

PA_Test.ear pa.war
    target default
    usedefaultbindings
    defaultbinding.virtual.host default_host

...和用于导入此清单的 Jython 脚本:

alreadyInstalled = 'PA_Test.ear' in AdminApp.list().splitlines()
importApplicationManifest('PA_Test.wdra')
save()
sync()
while AdminApp.isAppReady('PA_Test.ear') != 'true':
    time.sleep(10)
if not alreadyInstalled:
    for appMgr in queryMBeans(type='ApplicationManager', process='WebSphere_Portal'):
        appMgr.startApplication('PA_Test.ear')

披露我是 WDR

的贡献者和维护者