Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python <;BEA-050001>;WLContext.close()是在与创建它的线程不同的线程中调用的_Python_Weblogic_Wlst - Fatal编程技术网

Python <;BEA-050001>;WLContext.close()是在与创建它的线程不同的线程中调用的

Python <;BEA-050001>;WLContext.close()是在与创建它的线程不同的线程中调用的,python,weblogic,wlst,Python,Weblogic,Wlst,我已经编写了wlst脚本来递归地实现以下任务 停止应用程序 取消部署应用程序 部署应用程序 每当我执行脚本时,只有一个应用程序会取消部署或部署。对于其他应用程序,它会失败,并显示以下错误消息。您能帮助我解决此问题吗 File "<iostream>", line 1116, in domainConfig File "<iostream>", line 1848, in raiseWLSTException WLSTException: Error cding t

我已经编写了wlst脚本来递归地实现以下任务

  • 停止应用程序
  • 取消部署应用程序
  • 部署应用程序
每当我执行脚本时,只有一个应用程序会取消部署或部署。对于其他应用程序,它会失败,并显示以下错误消息。您能帮助我解决此问题吗

File "<iostream>", line 1116, in domainConfig
  File "<iostream>", line 1848, in raiseWLSTException
WLSTException: Error cding to the MBean
<Feb 20, 2014 11:28:44 AM IST> <Warning> <JNDI> <BEA-050001> <WLContext.close() was called in a different thread than the one in which it was created.>
文件“”,第1116行,在domainConfig中
raiseWLSTException中的文件“”,第1848行
WLSTException:向MBean发送CD时出错
我写了什么

import sys
import os
import getopt
#========================
#Usage Section
#========================
def usage():
    print "Usage:"
    print "java weblogic.WLST manageApplication.py -u username -p password -a adminUrl [<hostname>:<port>] -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()
导入系统 导入操作系统 导入getopt #======================== #使用部分 #======================== def用法(): 打印“用法:” 打印“java weblogic.WLST manageApplication.py-u用户名-p密码-a管理员URL[:]-t部署目标\n” 打印“java weblogic.WLST manageApplication.py-u weblogic-p weblogic1-a t3://localhost:7001-t AdminServer\n” 系统出口(2) #======================== #连接到域 #======================== def connectToDomain(): 尝试: 连接('weblogic'、'weblogic1'、't3://localhost:7001') 打印“已成功连接到域\n” 除: “打印”域不可检查。请再试一次\n' 退出() #======================== #应用程序取消部署科 #======================== def取消部署应用程序(): cd('AppDeployments') myapps=cmo.getAppDeployments() 对于myapps中的appName: 域配置() cd('/AppDeployments/'+appName.getName()+'/Targets')) mytargets=ls(returnMap='true') domainRuntime() cd('AppRuntimeStateRuntime') cd('AppRuntimeStateRuntime') 对于mytargets中的TargetList: curstate4=cmo.getCurrentState(appName.getName(),TargetList) 打印'------------',curstate4'------------',appName.getName() deploymentName=appName.getName() deploymentTarget=targetist 打印部署名称 打印部署目标 stopApplication(deploymentName,targets=deploymentTarget) 取消部署(deploymentName,targets=deploymentTarget) #======================== #输入值验证部分 #======================== 如果“名称”或“名称”或 尝试: opts,args=getopt.getopt(sys.argv[1:],“u:p:a:t:”,[“username=”,“password=”,“adminUrl=”,“deploymentTarget=”) 除getopt.GetoptError外,错误: 打印str(错误) 用户名=“” 密码=“” adminUrl='' 部署目标=“” 对于opt,opt中的参数: 如果opt==“-u”: 用户名=arg elif opt==“-p”: 密码=arg elif opt==“-a”: adminUrl=arg elif opt==“-t”: deploymentTarget=arg 如果用户名==“”: 打印“缺少\”-u用户名\”参数。\n 用法() elif密码==“”: 打印“缺少\”-p password \”参数。\n 用法() elif adminUrl==“”: 打印“缺少\”-adminUrl \”参数。\n 用法() elif deploymentTarget==“”: 打印“缺少\”-c deploymentTarget \”参数。\n 用法() #======================== #操作主控制块 #======================== def deployMain(): 对于打开的行(“c:\\wlst\\ApplicationList.txt”): 温度线=温度线 fields=temp_line.strip().split(“,”) 打印(字段[0]+“”+字段[1]) deploymentName=字段[0] deploymentFile=字段[1] 打印deploymentName+“”+deploymentFile+“”+deploymentTarget+“/n” 部署(deploymentName,deploymentFile,targets=deploymentTarget) #================== #主块 #===================== 连接域() 取消部署应用程序() deployMain() 断开连接() WLContext.close()可能不是真正的问题(甚至在一些Oracle示例中也是如此)。调用deploy和undeploy时,您会看到哪些错误消息

您应该看到如下内容:

Deploying application from /tmp/something/myapp.ear
Current Status of your Deployment:
Deployment command type: deploy
Deployment State       : completed
Deployment Message     : no message
我还看到,您从未在脚本的最后调用
activate()
,因此如果您在生产模式下运行,这可能是个问题

尝试在脚本末尾的
deployMain()
之后添加以下内容:

更新

发生激活错误是因为在取消部署之前未调用edit():

# Get edit/lock for upcoming changes
edit()
startEdit(120000, 120000, 'false')
undeployApplication()
我认为你最好能大大简化你的部署。您不需要经历确定目标的复杂性,因为您已经从所有目标取消部署。试试这个,看看你是否能取得进展:

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."

能否将整个内容放在try except块下的undeployApplication()方法下。exception块应该有:dumpStack()traceback.print\u exc(file=sys.stdout)print sys.exc\u info()这将显示异常来自哪个“cd”。您看到这个链接了吗?您可以处理异常。。。在stopApplication(deploymentName,targets=deploymentTarget)和undeploy(deploymentName,targets=deploymentTarget)@Mani-I将整个undeployApplication()脚本添加到try except块中。我没有从中得到多少错误信息。第一个应用程序已停止并取消部署。对于第二个应用程序,当我在deployMain()方法的末尾添加上述脚本时,它在raiseWLSTException WLSTException中给出了错误[File“”,第1848行:错误cding到MBean(,)。我得到以下错误[WLSTException:执行激活时发生错误:不在编辑树中时无法调用编辑函数。]iam使用weblogic 11g(wls1033_oepe111150_win32.exe)。我有两个ear应用程序需要部署。如果一个应用程序处于活动状态,而另一个处于失败状态,当iam尝试取消部署时,iam收到错误[WLST Exception:错误Cding to Mbean]。取消部署将在那里停止,脚本执行将停止。如果我再次运行脚本
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."