简体   繁体   English

TypeError:+的不支持的操作数类型:在执行python脚本时为“ NoneType”和“ str”

[英]TypeError: unsupported operand type(s) for +: 'NoneType' and 'str' in executing python script

I am trying to execute a wlst script to scaleup managed server i am getting below error.Since I am new to python not able to figure out whats the issue any pointers will surely help thanks 我正在尝试执行wlst脚本以扩大受管服务器的规模,但出现错误以下的错误。由于我是python的新手,因此无法找出问题所在,任何指针肯定会对您有所帮助

Problem invoking WLST - Traceback (innermost last):
  File "/MiddlewareOSB/MyOSB/common/bin/extendOSBDomain.py", line 214, in ?
  File "MiddlewareOSB/MyOSB/common/bin/extendOSBDomain.py", line 27, in main
  File "MiddlewareOSB/MyOSB/common/bin/extendOSBDomain.py", line 110, in createJMSResources
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'


import sys
import os

def main():
    try:
        #load properties file
        loadProperties('extend.properties')

        print('connecting ' + adminUser + ' to Admin server')
        connect(adminUser,adminPassword,'t3://'+adminHost+':'+adminPort)

        exists = 1
        index = 1

        while exists == 1:
        serverName = 'osb_server%s' % index
        print "serverName is: " + serverName
        try:
                print('Check if server exists...')
            cd('/Servers/'+serverName)
            index += 1  
        except:
            exists = 0

        managedServerName = 'osb_server%s' % index
        createManagedServer(managedServerName)
        addNewMStoClusterList(managedServerName)
        createJMSResources(managedServerName, index)
    except:
        traceback.format_exc()   
        exit()

def createManagedServer(managedServerName):
    print ('*** Creating managed server ' + managedServerName + ' ...')
    edit()  
    startEdit()
    managedServer = create(managedServerName,'Server')
    managedServer.setListenAddress(managedServerAddress)
    managedServer.setListenPort(int(managedServerPort))
    managedServer.setCluster(getMBean('/Clusters/' + clusterName))

    # To add additional properties, such as SSL, web server information, Coherence specific startup parameters,
    # server logging details or channels this would be the place to add it.
    # For instance the following (once edited) adds SSL to the server
    #
    # server.setKeyStores('CustomIdentityAndCommandLineTrust')
    # server.setCustomIdentityKeyStoreFileName(identityFileLocationAndPath)
    # server.setCustomIdentityKeyStoreType('JKS')
    # server.setCustomIdentityKeyStorePassPhrase(SSLPASSWORD)
    #
    # and this adds the coherence settings
    #
    # domainname=soaDomain+'_domain'
    # domainlocation='/usr/appl/'+'%s'%tla+'/weblogic'
    # cd('/Servers/' + managedServerName + '/ServerStart/' + managedServerName)
    # cmo.setArguments('-DOSB.coherence.localhost=' + managedServerName + ' -     DOSB.coherence.localport=7890  -DOSB.coherence.wka1=' + managedServerName + ' -DOSB.coherence.wka1.port=7890  -DOSB.coherence.wka2=' + managedServerName + ' -DOSB.coherence.wka1.port=7890 ')

    activate()
    print ('managed server created and added to the cluster')

def addNewMStoClusterList(managedServerName):
    edit()  
    startEdit() 
    cd('/Clusters/' + clusterName)
    activeCluster=cmo

    try:
        #increasing servers in list by 1
        servers = activeCluster.getNumberOfServersInClusterAddress()
        servers = servers + 1

        #adding new server address and port
        clusterList = activeCluster.getClusterAddress() + "," + managedServerAddress + ':' + managedServerPort

        #if the cluster list not empty, add the new server to the list and increase number of servers in cluster list by 1
        print ('*** Adding Server ' + managedServerName + ' to cluster address of cluster ' + clusterName + ' ...') 
        activeCluster.setNumberOfServersInClusterAddress(servers)
        activeCluster.setClusterAddress(clusterList)    

        activate()
        print ('cluster list updated')
    except:
        print('*** Cluster list failed to be updated - is the cluster address for the cluster empty?')  

def createJMSResources(managedServerName, index):
    edit()
    startEdit()
    targetServer = jarray.array([ObjectName('com.bea:Name='+ managedServerName +',Type=Server')], ObjectName)

    # creating persistance stores for jms servers
    # PLEASE NOTE - On some versions of OSB, you will need to create the physical folder for the filestore
    print ('*** Creating FileStores')

    filestore_list = ["FileStore", "WseeFileStore"]
    count = 0
    limit = 2

    while count < limit:
        filestore = filestore_list[count] + '_auto_%s' % index

        print ('*** Adding ' + filestore )

        cd('/')
        cmo.createFileStore(filestore)
        cd('/Deployments/' + filestore)
        cmo.setDirectory(filestore)
        set('Targets', targetServer)

        print ('Filestore ' + filestore + ' created')

        # create filestore directory, if it doesn't exist
        dir = System.getenv('DOMAIN_HOME') + '/' + filestore
        try:
            os.stat(dir)
        except:
            os.mkdir(dir)

        count += 1

    print ('Filestores created')

    # creating jms servers
    print ('*** Creating  JMS Servers') 

    # create wlsbJMSServer_auto_x jms server
    cd('/')
    cmo.createJMSServer('wlsbJMSServer_auto_%s' % index)
    cd('/JMSServers/wlsbJMSServer_auto_%s' % index)
    cmo.setPersistentStore(getMBean('/Deployments/FileStore_auto_%s' % index))
    set('Targets', targetServer)
    cd('/Deployments/wlsbJMSServer_auto_%s' % index) 
    cmo.setTemporaryTemplateResource('jmsResources') 
    cmo.setTemporaryTemplateName('TemporaryTmplt') 

    # create wseeJMSServer_auto_x jms server
    cd('/')
    cmo.createJMSServer('WseeJmsServer_auto_%s' % index)
    cd('/JMSServers/WseeJmsServer_auto_%s' % index)
    cmo.setPersistentStore(getMBean('/Deployments/WseeFileStore_auto_%s' % index))
    set('Targets', targetServer)

    targetWseeJmsServer = jarray.array([ObjectName('com.bea:Name=WseeJmsServer_auto_%s' % index + ',Type=JMSServer')], ObjectName)
    targetWlsbJmsServer = jarray.array([ObjectName('com.bea:Name=wlsbJMSServer_auto_%s' % index + ',Type=JMSServer')], ObjectName)

    print ('JMS Servers created')

    # creating WseeJMSModule Components
    print ('*** Create Queues: DefaultCallbackQueue-WseeJmsServer_auto_%s' % index + ' and DefaultQueue-WseeJmsServer_auto_%s' % index)

    # create subdeployment within WseeJmsModule
    cd('/JMSSystemResources/WseeJmsModule')
    cmo.createSubDeployment('WseeJmsServer_auto_%s' % index + '-Sub')

    # create DefaultQueue-WseeJmsServer_auto_x queue
    cd('/JMSSystemResources/WseeJmsModule/JMSResource/WseeJmsModule')
    cmo.createQueue('DefaultQueue-WseeJmsServer_auto_%s' % index)
    cd('/JMSSystemResources/WseeJmsModule/JMSResource/WseeJmsModule/Queues/DefaultQueue-WseeJmsServer_auto_%s' % index)
    cmo.setJNDIName('weblogic.wsee.DefaultQueue-WseeJmsServer_auto_%s' % index)
    cmo.setSubDeploymentName('WseeJmsServer_auto_%s' % index + '-Sub')
    cd('/JMSSystemResources/WseeJmsModule/SubDeployments/WseeJmsServer_auto_%s' % index + '-Sub')
    set('Targets',targetWseeJmsServer)

    # create DefaultCallbackQueue-WseeJmsServer_auto_x queue
    cd('/JMSSystemResources/WseeJmsModule/JMSResource/WseeJmsModule')
    cmo.createQueue('DefaultCallbackQueue-WseeJmsServer_auto_%s' % index)
    cd('/JMSSystemResources/WseeJmsModule/JMSResource/WseeJmsModule/Queues/DefaultCallbackQueue-WseeJmsServer_auto_%s' % index)
    cmo.setJNDIName('weblogic.wsee.DefaultCallbackQueue-WseeJmsServer_auto_%s' % index)
    cmo.setSubDeploymentName('WseeJmsServer_auto_%s' % index + '-Sub')
    cd('/JMSSystemResources/WseeJmsModule/SubDeployments/WseeJmsServer_auto_%s' % index + '-Sub')
    set('Targets',targetWseeJmsServer)

    print ('Queues within the WseeJMSModule created')

    print ('*** Creating queues within the jmsResources module')

    # create subdeployment within jmsResources
    wlsJmsServerSubName = 'wlsbJMSServer%s' % index + '_sub'
    cd('/JMSSystemResources/jmsResources')
    cmo.createSubDeployment(wlsJmsServerSubName)
    cd('SubDeployments/' + wlsJmsServerSubName)
    set('Targets',targetWlsbJmsServer)

    # create queues within jmsResources
    queue_list = ["wli.reporting.jmsprovider.queue", "wli.reporting.jmsprovider_error.queue", "wlsb.internal.transport.task.queue.email", "wlsb.internal.transport.task.queue.file", "wlsb.internal.transport.task.queue.ftp", "wlsb.internal.transport.task.queue.sftp","QueueIn"]
    count = 0
    limit = 7

    while count < limit:
        queue = queue_list[count] + '_auto_%s' % index
        dist_queue = 'dist_' + queue_list[count] + '_auto'

        print ('*** Adding ' + queue + ' to ' + dist_queue)

        cd('/JMSSystemResources/jmsResources/JMSResource/jmsResources/Queues')
        cmo.createQueue(queue)
        cd('/JMSSystemResources/jmsResources/JMSResource/jmsResources/Queues/' + queue)
        cmo.setJNDIName(queue)
        cmo.setSubDeploymentName(wlsJmsServerSubName)
        cd('/JMSSystemResources/jmsResources/JMSResource/jmsResources/DistributedQueues/' + dist_queue)
        cmo.createDistributedQueueMember(queue)
        cd('/JMSSystemResources/jmsResources/JMSResource/jmsResources/DistributedQueues/' + dist_queue + '/DistributedQueueMembers/' + queue)
        cmo.setWeight(1)

        print ('Queue created and added to UDQ')
        count += 1

    # create SAF Agent
    cd('/')
    cmo.createSAFAgent('ReliableWseeSAFAgent_auto_%s' % index)
    cd('/SAFAgents/ReliableWseeSAFAgent_auto_%s' % index)
    cmo.setStore(getMBean('/FileStores/WseeFileStore_auto_%s' % index))
    set('Targets',targetServer)
    cmo.setServiceType('Both')

    activate()
main()

I see you've cranked out a lot of code, however, it's littered with syntax errors. 我看到您已经编写了很多代码,但是,其中充斥着语法错误。 I'd recommend you try writing smaller chunks at a time, getting each step working as you plug along. 我建议您尝试一次编写较小的块,并在插入时使每个步骤都能正常工作。

First, your while loop is infinte. 首先,您的while循环是无限的。

Second, if you want to use parenthesis with print (which I recommend), for Python 2.x, use this at the top of your files: 其次,如果要在打印中使用括号(建议使用括号),对于Python 2.x,请在文件顶部使用它:

from future import print_function

Third, you should always use os.path for portable filesystem path manipulations. 第三,应始终使用os.path进行可移植文件系统路径操作。

What your error means is that, somewhere, you're trying to add a None type with a string. 错误的意思是,您在某处尝试添加带字符串的None类型。 That's not possible, of course, so Python throws an exception. 当然,这是不可能的,因此Python会引发异常。 What you need to do, is to figure out why whatever you're adding is None, and fix that ;) 您需要做的是弄清楚为什么您要添加的内容都不是,然后进行修复;)

Hope that helps! 希望有帮助!

您可能需要设置环境变量DOMAIN_HOME或将System.getenv('DOMAIN_HOME')更改为System.getenv('DOMAIN_HOME', '.')等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 类型错误:+= 不支持的操作数类型:&#39;NoneType&#39; 和 &#39;str&#39; - TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str' TypeError:%支持的操作数类型:&#39;NoneType&#39;和&#39;str&#39; - TypeError: unsupported operand type(s) for %: 'NoneType' and 'str' 类型错误:+ 不支持的操作数类型:“NoneType”和“str” - TypeError: unsupported operand type(s) for +: 'NoneType' and 'str' TypeError:+不支持的操作数类型:“ NoneType”和“ str” - TypeError: unsupported operand type(s) for +: 'NoneType' and 'str' TypeError:&:不支持的操作数类型:“ NoneType”和“ str” - TypeError: unsupported operand type(s) for &: 'NoneType' and 'str' Python TypeError:+不支持的操作数类型:&#39;NoneType&#39;和&#39;str&#39; - Python TypeError: unsupported operand type(s) for +: 'NoneType' and 'str' python2 :: TypeError:+:&#39;NoneType&#39;和&#39;str&#39;不受支持的操作数类型 - python2::TypeError: unsupported operand type(s) for +: 'NoneType' and 'str' Python TypeError:+不支持的操作数类型:&#39;NoneType&#39;和&#39;str&#39; - Python TypeError: unsupported operand type(s) for +: 'NoneType' and 'str' Python错误-TypeError:+:&#39;NoneType&#39;和&#39;str&#39;不支持的操作数类型 - Python error - TypeError: unsupported operand type(s) for +: 'NoneType' and 'str' CSV阅读器:TypeError:+不支持的操作数类型:“ NoneType”和“ str” - CSV Reader: TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM