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