Отдалечено качване чрез WLST

Опитвам се да извърша дистанционно качване и внедряване чрез WLST. Успявам да разположа приложения, които вече присъстват в пътя на сървъра WebLogic. Но сега бих искал да разположа един дистанционно достъпен.

Има ли някаква възможност за качване на WAR/EAR на сървъра WebLogic чрез WLST преди внедряването му?

Работя с weblogic 12C.

Опитах с:

java -cp wlserver/server/lib/weblogic.jar weblogic.Deployer -adminurl t3://WeblogicServer:7001 -user weblogic -password weblogic -deploy /tmp/HelloWorld.war -remote -upload

дай ми като връщане:

weblogic.Deployer invoked with options:  -adminurl t3://WeblogicServer:7001 -user weblogic -deploy /tmp/HelloWorld.war -remote -upload
<6 juil. 2012 17 h 58 CEST> <Info> <J2EE Deployment SPI> <BEA-260121> <Initiating deploy operation for application, HelloWorld [archive: /tmp/HelloWorld.war], to configured targets.> 
[J2EE Deployment SPI:260080]Unable to define the application install directory at "/tmp/helloworld.war". Directory could not be created or is a file.

И когато проверявам на сървъра, нищо не е разгърнато.


person Lite    schedule 06.07.2012    source източник


Отговори (3)


Намерих решението: Не трябва да използваме директорията /tmp като източник, защото weblogic.Deployer използва тази директория.

Така че командата е:

java -cp wlserver/server/lib/weblogic.jar weblogic.Deployer -adminurl
 t3://WeblogicServer:7001 -user weblogic -password weblogic -deploy 
/home/admin/HelloWorld.war -remote -upload
person Lite    schedule 09.07.2012

Да, има. Разгледайте референция за команди WLST deploy ( Тази връзка е за версия 10gR3).
Можете да посочите опциите remote и upload с true, тъй като техните стойности по подразбиране са false.

PS 1: Опцията remote не е налична на WebLogic 9.0 и по-стари версии (но винаги можете да вземете по-нова weblogic.jar и да опитате.
PS 2: Ще трябва да имате отдалечен достъп до административните интерфейси (обикновено портове 7001 и/ или 7002). Това означава отваряне на защитни стени и т.н.
PS 3: Моля, предоставете версията на вашия WebLogic сървър, тъй като това може да ни помогне да ви помогнем.

person Viccari    schedule 06.07.2012
comment
Никога не съм виждал такава грешка. Ще разгледам и ще ви уведомя, ако намеря нещо. - person Viccari; 07.07.2012
comment
Получих [J2EE Deployment SPI:260080]Не мога да дефинирам директорията за инсталиране на приложението в /tmp/helloworld.war. Директорията не може да бъде създадена или е файл. - person Lite; 09.07.2012
comment
Няколко неща, които можете да опитате: Първо: моля, добавете -source преди вашия .war път (... -deploy -source /tmp/HelloWorld.war ...). Второ: погледнете в папката /tmp на вашия сървър и потърсете helloworld.war файл. Ако съществува, изтрийте го и опитайте отново. Трето: добавете нещо като -Djava.io.tmpdir=${WL_DOMAIN_HOME}/tmp към вашите управлявани и администраторски стартиращи скриптове. Възможно е вашият WL да използва /tmp/filename по подразбиране. Кажи ми как върви. - person Viccari; 09.07.2012
comment
Опитах вашите препоръки, но нищо не се промени. Въпреки това изпълнението на командата с режим за отстраняване на грешки ми даде нещо интересно за корена на приложението и конфигурацията на приложението. Вижте: pastebin.com/G0ra5khx. Но все още не знам какво е значението на тези променливи. - person Lite; 09.07.2012
comment
И : forums.oracle.com/forums/thread.jspa?threadID=834572.. но нищо ново - person Lite; 09.07.2012
comment
Тези стойности изглеждат добре, не мисля, че са свързани с проблема. - person Viccari; 09.07.2012

Написах сам, мога да направя undeploy + deploy. Линията на разгръщане е:

разгръщане (проект, архив, apptargets, 'етап', план, отдалечено='true', upload='true', archiveVersion=archiveversion, planVersion=planversion)

  • недостатъкът на използването на номера на версията при внедряване е, че повторното разполагане с план не работи

Пълен скрипт: (следващия ред кодирайте сами, трябваше да добавя няколко интервала, за да го поставя тук)

from java.io import FileReader
from datetime import datetime


def deployApp( project, archive, archiveversion, plan, planversion, apptargets ):

#### UNDEPLOY app          
try:

    domainConfig()
    cd('/')
    found = false
    for app in cmo.getAppDeployments():
        name=app.getName()

        try:                 
            cd('/AppDeployments/' + name ) 
            applicationName=get('ApplicationName')

            if applicationName==project:
                print '\n__ FOUND aplication: ', name
                found = true

                version=get('VersionIdentifier')
                sourcePath=get('SourcePath')
                planPath=get('PlanPath')

                targets=''
                for target in cmo.getTargets():

                    targetName=target.getName()
                    if targets=='':
                        targets=targetName
                    else:
                        targets=targets + ', ' + targetName

                print '   applicationName:\t', applicationName
                print '   version:\t\t', version
                print '   sourcePath:\t', sourcePath
                print '   planPath:\t', planPath
                print '   targets:\t\t', targets

                if version==archiveversion + '#' + planversion: 
                    print '\nCorrect Application version found.  No installation needed\n'
                    return
                else:
                    print '\n__ REMOVING application: ',applicationName, '     version:', version 
                    undeploy(project)

        except:     
            print "IGNORE ERROR: (deployed applicaties gegevens ophalen) ", sys.exc_info()[0]

    if found==false:
        print "Application " + project + "not found."

except:     
    print "Failure in application remove part: ", sys.exc_info()[0]
    raise   


# get deploy targets
try:   
    if apptargets==None:
        serverConfig()
        cd('/')
        targetList = []              
        for cluster in cmo.getClusters():
            targetList.append( cluster.getName() )
        apptargets = ",".join(targetList)

        print 'USING default app target:', apptargets, "   (apptargets not found in environmentfile)" 
except:
    print "Failure while creating default target", sys.exc_info()[0]
    raise 


#### DEPLOY app
try:         
    print '\n__ DEPLOYING application: ', project, archiveversion + '#' + planversion  + '    target:' + apptargets

    deploy( project, archive
    , apptargets, 'stage', plan
    , remote='true', upload='true', archiveVersion=archiveversion, planVersion=planversion )
except:     
    print "Failure in deployment part: ", sys.exc_info()[0]
    raise


# connect to domein
# 1) in plain passsword
# 1)  using encrypted domain credential in separate files
# 2)  using encrypted domain credential in home directory user
def Connect( domainproperties ):
plainUser = domainproperties.getProperty("user")
plainPassword = domainproperties.getProperty("password")
if not (plainUser is None) and not (plainPassword is None):
    print "Connecting with user & password"
    connect( plainUser, plainPassword, domainproperties.getProperty("url"))
    return        

encryptedUserConfigFile = domainproperties.getProperty("encryptedCredentialsFile")
encryptionKeyFile = domainproperties.getProperty("encryptionKeyFile")    
if not (encryptedUserConfigFile is None) and not (encryptionKeyFile is None):
    print "Connecting with encryptedCredentialsFile: ", encryptedUserConfigFile, "  and encryptionKeyFile: ", encryptionKeyFile 
    connect(userConfigFile=encryptedUserConfigFile, userKeyFile=encryptionKeyFile, url=domainproperties.getProperty("url"))
    return

print "Connecting with encryptedCredentialsFile in home directory"
connect( url=domainproperties.getProperty("url") )
return    



try:
print "____ running app_deploy.py at   " + str(datetime.now())

project = sys.argv[1]
archive = sys.argv[3]
archiveversion = sys.argv[4]
plan = sys.argv[5]
planversion = sys.argv[6]    
environmentfile = sys.argv[2]

propertyfilereader=FileReader(environmentfile)
domainproperties=Properties()
domainproperties.load(propertyfilereader)

print "  environment: ", environmentfile 
print "  Ear:   ", archive, "  version:", archiveversion
print "  plan:  ", plan, "  version:", planversion

## Connect
#connect( domainproperties.getProperty("user"), domainproperties.getProperty("password"), domainproperties.getProperty("url") )
Connect( domainproperties )

try: 

    ## Deploy
    deployApp( project, archive, archiveversion, plan, planversion, domainproperties.getProperty("apptargets") )

finally:
    # niet dat het uitmaakt, maar wel zo netjes
    disconnect()

except:
print "ABORT APP DEPLOY: ", #  sys.exc_info()[0], "_", sys.exc_info()[1]
raise

Забавлявайте се с него.

person Richard van den Berg    schedule 07.11.2013