2014-02-20 2 views
2

я написал WLST сценарий для достижения ниже задач рекурсивно<BEA-050001> WLContext.close() вызывалась в другом потоке, чем тот, в котором он был создан

  • Остановка приложения
  • Сворачивание приложений
  • Развертывание appliactions

Если когда-нибудь я выполнить сценарий, либо Undeploy или Deploy происходит только 1 приложения. Для других приложений он не работает с сообщением об ошибке. Можете ли вы помочь мне решить проблему?

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

WLST сценария, что я написал

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() 
+0

Не можете ли вы поместить все содержимое под метод undeployApplication() под try, кроме блока. кроме блока должно иметь: dumpStack() traceback.print_exc (file = sys.stdout) print sys.exc_info() Это будет, из которого «cd» приходит исключение. – Mani

+0

Вы видели эту ссылку http://wlstbyexamples.blogspot.in/2010/09/deployment-script-using-wlst.html Вы можете обрабатывать исключение ... в stopApplication (deploymentName, tasks = deploymentTarget), а также при развертывании (deploymentName, tasks = deploymentTarget) –

+0

@Mani - Я добавил весь скрипт undeployApplication() в try, кроме блока. Я не получил много информации об ошибках от этого. Первое приложение останавливается и не развертывается. Для 2-го приложения оно дает ошибку [Файл «», строка 1848, в raiseWLSTException WLSTException: ошибка cding для MBean (, ><объект трассировки при 3>) – user1041177

ответ

1

WLContext.close(), вероятно, не является реальной проблемой (это даже в некоторых примерах Oracle). Какие сообщения об ошибках отображаются при развертывании и развертывании?

Вы должны увидеть что-то вроде:

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():

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

UPDATE:

Ошибка активации происходит потому, что вы не заехали редактировать() перед свёртыванием:

# 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." 
+0

когда я добавил указанный выше сценарий в конце метода deployMain(). Я получаю следующую ошибку: [WLSTException: ошибка при выполнении активации: невозможно вызвать функции редактирования, если вы не находитесь в дереве редактирования.] Iam с помощью weblogic 11g (wls1033_oepe111150_win32.exe). – user1041177

+0

У меня есть два приложения для ушей, которые необходимо развернуть. Если одно приложение находится в активном состоянии, а другое - в состоянии сбоя, когда iam пытается отключиться, iam получает ошибку [WLST Exception: Error Cding to Mbean]. Undeploy останавливается там, и выполнение скрипта прекращается. Если я снова запустил скрипт во второй раз, снова undeploy произойдет во второй раз. – user1041177

+0

Мое требование состоит в том, чтобы развернуть 2 приложения EAR в том, что когда-либо состояние (активное, неудачное, подготовленное, новое) присутствует в weblogic и разворачивает 2 уха рекурсивно. Я добавляю ухо для развертывания в текстовом файле. Пожалуйста, помогите добиться того же – user1041177

Смежные вопросы

 Смежные вопросы