Se llamó a WLContext.close () en un subproceso diferente al que se creó

He escrito wlst script para lograr las tareas a continuación de forma recursiva

  • Deteniendo las aplicaciones
  • Desplegar las aplicaciones
  • Desplegando las aplicaciones

Cuando ejecuto el script, la desinstalación o la implementación se realizan solo para 1 aplicación. Para otras aplicaciones, falla con el siguiente mensaje de error. ¿Puede ayudarme a solucionar el problema?

File "", line 1116, in domainConfig File "", line 1848, in raiseWLSTException WLSTException: Error cding to the MBean      

WLST Script lo que he escrito

 import sys import os import getopt #======================== #Usage Section #======================== def usage(): print "Usage:" print "java weblogic.WLST manageApplication.py -u username -p password -a adminUrl [:] -t deploymentTarget\n" print "java weblogic.WLST manageApplication.py -u weblogic -p weblogic1 -a t3://localhost:7001 -t AdminServer\n" sys.exit(2) #======================== #Connect To Domain #======================== def connectToDomain(): try: connect('weblogic','weblogic1','t3://localhost:7001') print 'Successfully connected to the domain\n' except: print 'The domain is unreacheable. Please try again\n' exit() #======================== #Application undeployment Section #======================== def undeployApplication(): cd ('AppDeployments') myapps=cmo.getAppDeployments() for appName in myapps: domainConfig() cd ('/AppDeployments/'+appName.getName()+'/Targets') mytargets = ls(returnMap='true') domainRuntime() cd('AppRuntimeStateRuntime') cd('AppRuntimeStateRuntime') for targetinst in mytargets: curstate4=cmo.getCurrentState(appName.getName(),targetinst) print '-----------', curstate4, '-----------', appName.getName() deploymentName=appName.getName() deploymentTarget=targetinst print deploymentName print deploymentTarget stopApplication(deploymentName, targets=deploymentTarget) undeploy(deploymentName, targets=deploymentTarget) #======================== #Input Values Validation Section #======================== if __name__=='__main__' or __name__== 'main': try: opts, args = getopt.getopt(sys.argv[1:], "u:p:a:t:", ["username=", "password=", "adminUrl=", "deploymentTarget="]) except getopt.GetoptError, err: print str(err) username = '' password = '' adminUrl = '' deploymentTarget = '' for opt, arg in opts: if opt == "-u": username = arg elif opt == "-p": password = arg elif opt == "-a": adminUrl = arg elif opt == "-t": deploymentTarget = arg if username == "": print "Missing \"-u username\" parameter.\n" usage() elif password == "": print "Missing \"-p password\" parameter.\n" usage() elif adminUrl == "": print "Missing \"-a adminUrl\" parameter.\n" usage() elif deploymentTarget == "": print "Missing \"-c deploymentTarget\" parameter.\n" usage() #======================== #Main Control Block For Operations #======================== def deployMain(): for line in open("c:\\wlst\\applicationsList.txt"): temp_line = line fields = temp_line.strip().split(",") print(fields[0]+" "+fields[1]) deploymentName = fields[0] deploymentFile = fields[1] print deploymentName+" "+deploymentFile+" "+deploymentTarget+"/n" deploy(deploymentName,deploymentFile,targets=deploymentTarget) #================== #main block #===================== connectToDomain() undeployApplication() deployMain() disconnect() 

    WLContext.close () probablemente no sea el problema real (incluso en algunos de los ejemplos de Oracle). ¿Qué mensajes de error ve cuando se llama a desplegar y anular la implementación?

    Deberías ver algo como:

     Deploying application from /tmp/something/myapp.ear Current Status of your Deployment: Deployment command type: deploy Deployment State : completed Deployment Message : no message 

    También veo que nunca llama a activate() al final de su script, por lo que podría ser el problema si está ejecutando en modo de producción.

    Intente agregar lo siguiente al final de su script después de deployMain() :

     save() status = activate(300000, "block='true'") status.getStatusByServer() status.getDetails() 

    ACTUALIZACIÓN :

    El error de activación se produce porque no ha llamado a edit () antes de la desinstalación:

     # Get edit/lock for upcoming changes edit() startEdit(120000, 120000, 'false') undeployApplication() 

    Creo que será mejor que simplifiques enormemente tu desinstalación. No es necesario que pase por la complejidad de determinar los objectives porque ya no está desplegando todos los destinos. Intenta esto y ve si puedes progresar:

     cd ('AppDeployments') myapps=cmo.getAppDeployments() for appName in myapps: try: appPath = "/AppDeployments/" + appName.getName() cd(appPath) print "Stopping deployment " + appName.getName() stopApplication(appName.getName()) print "Undeploying " + appName.getName() undeploy(appName.getName(), timeout=60000) except Exception , e: print "Deployment " + appName.getName() + " removal failed."