Weblogic WLSTException:在创建JMS队列时对MBean进行cding时出错

Weblogic WLSTException:在创建JMS队列时对MBean进行cding时出错,weblogic,wlst,Weblogic,Wlst,我正试图用下面的代码创建JMSQueue,但出现了错误 cd ('/JMSSystemResources/BAMJMSSystemResource/JMSResource/BAMJMSSystemResource/Queues/SampleQueue') 当我连接到服务器运行时并检查时,我可以看到JMS模块不可用,但从管理控制台我可以清楚地看到它(JMS模块BAMJMSSystemResource)可用,而且它没有给出错误 注意:我在调用createJMSQueue函数之前创建JMS模块) 错

我正试图用下面的代码创建JMSQueue,但出现了错误

cd ('/JMSSystemResources/BAMJMSSystemResource/JMSResource/BAMJMSSystemResource/Queues/SampleQueue')
当我连接到服务器运行时并检查时,我可以看到JMS模块不可用,但从管理控制台我可以清楚地看到它(JMS模块BAMJMSSystemResource)可用,而且它没有给出错误

注意:我在调用createJMSQueue函数之前创建JMS模块)

错误是

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
正在启动编辑会话。。。
已启动编辑会话,请确保保存并激活您的
一旦您完成更改。
***正在创建JMS队列。。。。
创建队列SampleQueue
调试>>JMSSystemResources/BAMJMSSystemResource/JMSResource/BAMJMSSystemResource/Queues/SampleQueue
没有可用的堆栈跟踪。
调用WLST-回溯(最里面的最后一个)时出现问题:
文件“/home/oracle/JMSConfigurations.py”,第188行,在?
createJMSQueue中的文件“/home/oracle/JMSConfigurations.py”,第77行
文件“”,第182行,在cd中
raiseWLSTException中的文件“”,第1847行
WLSTException:向MBean发送CD时出错

真的想了解出了什么问题吗?

Shanaka,在调试语句之后给出的“cd”命令可能有问题。您可以按如下方式给出cd行:

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

您还可以使用

更清楚地了解JMS模块的创建。除了在“cd”(/JMSSystemResources/“+jmsModuleName+”/JMSResource/“+jmsModuleName+”/Queues/“+jmsQueueName”)中混合使用双引号和单引号外,这部分脚本看起来不错 若子部署已经以JMS服务器为目标,那个么分配目标“cmo.addTarget()”,就不需要以队列为目标。 您可以检查创建JMS模块、子部署、目标JMS模块到服务器和子部署到JMS服务器的编辑会话是否已成功激活。 那么这个队列创建应该可以正常工作

问候,,
Kshitij

这可能意味着您试图创建的JMS已经存在于WebLogic中。确认JMS名称不是现有名称。

我与您共享正确的代码:

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

您是否尝试手动遍历路径

可以使用wlst命令行遍历/编辑位置。
使用cd(“”)和ls()遍历并列出您创建的属性

谢谢Pavan,我看了你的例子。但路径看起来是ok,这就是为什么我要打印以查看路径是否正确(来自调试)。我想知道的另一点是,JMS模块在MBean树上也不可用吗?
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