我正在尝试在 Weblogic 中设置一个 JMS 队列以进行事务处理。这需要在我正在使用的连接工厂上启用 XA。
我知道一旦 weblogic 启动并运行,我可以从管理控制台执行此操作。但是,在创建域时,我确实需要在离线模式下进行。现在我有这个:
#*Setting up resources and JDBC*
cd('/')
create('JMSServer-0', 'JMSServer')
cd('/')
create('JMSQueues', 'JMSSystemResource')
cd('JMSSystemResource/JMSQueues/JmsResource/NO_NAME_0')
queue=create('AQueue', 'Queue')
queue.setJNDIName('jms/AQueue')
queue.setSubDeploymentName('subdeploymentA')
queue=create('BQueue', 'Queue')
queue.setJNDIName('jms/BQueue')
queue.setSubDeploymentName('subdeploymentB')
connFact=create('AConnFact', 'ConnectionFactory')
connFact.setJNDIName('jms/AConnFact')
connFact.setSubDeploymentName('subdeployment_fact_A')
connFact=create('BConnFact', 'ConnectionFactory')
connFact.setJNDIName('jms/BConnFact')
connFact.setSubDeploymentName('subdeployment_fact_B')
cd('/JMSSystemResource/JMSQueues/JmsResource/NO_NAME_0/ConnectionFactory/BConnFact')
tp=create('BConnFactTp', 'TransactionParam')
tp.setXAConnectionFactoryEnabled(true)
#TransactionParam does not show up here
print "\n" + pwd() + "\n"
ls()
#TransactionParam DOES show up here
cd('/JMSSystemResource/JMSQueues/JmsResource/NO_NAME_0/ConnectionFactory/AConnFact')
print "\n" + pwd() + "\n"
ls()
#Finalization follows here
现在,这是一个现有的脚本,并且 AConnFact 和 AQueue 在禁用 XA 的情况下已经存在了一段时间,所以我宁愿不理会它们。那么,如何使 BConnFact 实际上是获得新 TransactionParam 设置的那个?
我应该注意到我确实对此有一个“meh”修复。Create 将按照创建 ConnectionFactories 的顺序放置 TransactionParams。我可以按照我想要的顺序放置它们。但是,我宁愿不这样做。