WLSTException: ошибка перехода к MBean при создании очереди JMS

Я пытаюсь создать JMSQueue со следующим кодом, но получаю сообщение об ошибке

cd ('/JMSSystemResources/BAMJMSSystemResource/JMSResource/BAMJMSSystemResource/Queues/SampleQueue')

Когда я подключился к среде выполнения сервера и проверил, я вижу, что модуль JMS недоступен, но из консоли администратора я ясно вижу, что он (модуль JMS BAMJMSSystemResource) доступен, а также он не дает ошибок для

Примечание. Я создаю модуль JMS перед вызовом функции createJMSQueue)

def createJMSQueue(jmsQueueName, jmsModuleName, jndiName, subdeployment):
    print '   Creating Queue '+jmsQueueName
    cd('/')
    cd("/JMSSystemResources/"+jmsModuleName+"/JMSResource/"+jmsModuleName)
    cmo.createQueue(jmsQueueName)
    print('DEBUG >> '+jmsModulePath+'/Queues/'+jmsQueueName)
    cd("/JMSSystemResources/"+jmsModuleName+"/JMSResource/"+jmsModuleName+'/Queues/'+jmsQueueName)
    set('JNDIName',jndiName)
    set('SubDeploymentName',subdeployment)
    cd('/JMSSystemResources/'+jmsModuleName+'/SubDeployments/'+subdeployment)
    cmo.addTarget(getMBean('/JMSServers/BAMMonitoringServer'))

Ошибка в том,

Starting an edit session ...
Started edit session, please be sure to save and activate your 
changes once you are done.
*** Creating JMS Queues ....
    Creating Queue SampleQueue 
DEBUG >> JMSSystemResources/BAMJMSSystemResource/JMSResource/BAMJMSSystemResource/Queues/SampleQueue 
No stack trace available.
Problem invoking WLST - Traceback (innermost last):
  File "/home/oracle/JMSConfigurations.py", line 188, in ?
  File "/home/oracle/JMSConfigurations.py", line 77, in createJMSQueue
  File "<iostream>", line 182, in cd
  File "<iostream>", line 1847, in raiseWLSTException
WLSTException: Error cding to the MBean

Очень хочется понять, что не так?


person Shanaka    schedule 09.09.2015    source источник


Ответы (5)


Шанака, может быть проблема в команде "cd" после оператора DEBUG. Вы можете указать строку cd, как показано ниже:

cd(jmsModulePath+'/Queues/'+jmsQueueName)

Вы также можете получить больше ясности в создании модуля JMS, используя WLST на примерах

person PavanDevarakonda    schedule 10.09.2015
comment
Спасибо, Паван, я прошел через твой пример. но путь выглядит нормально, поэтому я печатаю, чтобы увидеть правильный путь или нет (из DEBUG). Другой момент, который мне интересно, модуль JMS также недоступен в дереве MBean? - person Shanaka; 11.09.2015

Этот раздел скрипта выглядит нормально, за исключением сочетания двойной и одинарной кавычки в " cd("/JMSSystemResources/"+jmsModuleName+"/JMSResource/"+jmsModuleName+'/Queues/'+jmsQueueName)" и назначения цели "cmo.addTarget()" , вам не нужно ориентироваться на очередь, если подразвертывание уже нацелено на сервер JMS. Вы можете проверить, успешно ли активирован ваш сеанс редактирования создания модуля JMS, вспомогательного развертывания, целевого модуля JMS на сервере и вспомогательного развертывания на сервере JMS. Тогда это создание очереди должно работать нормально.

С уважением, Кшитий

person Kshitij Singh    schedule 11.09.2015

Это может означать, что JMS, которую вы пытаетесь создать, уже существует в WebLogic. Убедитесь, что имена JMS не существуют.

person fidudidu    schedule 10.01.2020

Я делюсь с вами своим правильным кодом:

def create_jms_object(name, module, subdeployment, type):
  cd('/JMSSystemResources/'+module+'/JMSResource/'+module)
  myob=create(name, type)
  myob.setJNDIName("jms/"+name)
  myob.setSubDeploymentName(subdeployment)

и я вызываю функцию здесь:

queue_name = queue['name']
  sub_depl_name = queue['sub_deployment']
  if(not_exists_jms_ud_qeue(jms_module_name, queue_name)):
    print 'Creating queue '+queue_name
    create_jms_object(queue_name, jms_module_name, sub_depl_name, 'UniformDistributedQueue')
    print 'Created queue '+queue_name
  else:
    print 'UniformDistributedQueue ' + queue_name + ' already exists'
  cmo = cd('/JMSSystemResources/'+jms_module_name+'/JMSResource/'+jms_module_name+'/UniformDistributedQueues/'+queue_name+'/DeliveryFailureParams/'+queue_name)
  redelivery_limit = queue.get('redelivery_limit',-1)
  set('RedeliveryLimit', redelivery_limit)
  errorDestinationName = queue.get('error_destination', None)
  if (errorDestinationName is not None):
    errorDestination = getMBean('/JMSSystemResources/'+jms_module_name+'/JMSResource/'+jms_module_name+'/UniformDistributedQueues/'+errorDestinationName)
    set('ErrorDestination', errorDestination)
    print 'Dead letter queue set to: '+errorDestinationName
  else:
    cmo.unSet('ErrorDestination')
    print 'Dead letter queue unset'
  cd('/JMSSystemResources/'+jms_module_name+'/JMSResource/'+jms_module_name+'/UniformDistributedQueues/'+queue_name+'/DeliveryParamsOverrides/'+queue_name)
  redelivery_delay = queue.get('redelivery_delay',-1)
  set('RedeliveryDelay', redelivery_delay)
  time_to_deliver = queue.get('time_to_deliver',-1)
  set('TimeToDeliver', time_to_deliver)

где объект очереди следующий:

{
    "name" : "events_reg_queue",
    "sub_deployment" : "Registry-SD",
    "redelivery_limit" : 1
}

и следующую функцию полезности:

def not_exists_jms_ud_qeue(jmsModuleName, jmsResourceName):
  try:
    myMBean = getMBean('/JMSSystemResources/'+jmsModuleName+'/JMSResource/'+jmsModuleName+'/UniformDistributedQueues/'+jmsResourceName)
    if (myMBean is None):
      return true
    return false
  except:
    return true
person Simone Casamassa    schedule 13.01.2020

Вы пытались пройти путь вручную?

Вы можете перейти к местоположению /edit с помощью командной строки wlst. Используйте cd("") и ls() для просмотра и перечисления тех свойств, которые вы создали.

person Nagaraj Ranganath    schedule 21.02.2020