Jms 如何在WLST脱机模式下设置XAConnectionFactoryEnabled

Jms 如何在WLST脱机模式下设置XAConnectionFactoryEnabled,jms,weblogic,weblogic-10.x,wlst,Jms,Weblogic,Weblogic 10.x,Wlst,我试图在Weblogic中设置一个JMS队列,使其成为事务性的。这需要在我使用的连接工厂上启用XA 我知道一旦weblogic启动并运行,我就可以从管理控制台执行此操作。但是,在创建域时,我确实需要在脱机模式下执行此操作。现在我有这个: #*Setting up resources and JDBC* cd('/') create('JMSServer-0', 'JMSServer') cd('/') create('JMSQueues', 'JMSSystemResource') cd('JM

我试图在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
现在,这是一个已经存在的脚本,AconFact和AQueue在禁用XA的情况下已经存在了一段时间,所以我宁愿不使用它们。那么,如何使BConnFact实际上是获得新TransactionParam设置的那个呢


我应该注意到,我确实对此有一个“meh”修复。Create将按照创建ConnectionFactorys的顺序放置TransactionParams。我可以按我想要的顺序放。然而,我宁愿不这样做

看看下面的例子是否适合您:

cd('/JMSSystemResources/MyModule/JMSResource/MyModule')
cmo.createConnectionFactory('MyConnFac')
cd('/JMSSystemResources/MyModule/JMSResource/MyModule/ConnectionFactories/MyConnFac')
cmo.setJNDIName('jms/MyConnFac')
cmo.setSubDeployment('my_sub')
cd('/JMSSystemResources/MyModule/JMSResource/MyModule/ConnectionFactories/MyConnFac/TransactionParams/MyConnFac')
cmo.setTransactionTimeout(3600)
cmo.setXAConnectionFactoryEnabled(true)
在10.3.6中为我们工作

编辑:啊,可能吧。如果您确实需要离线执行,而wlst无法工作,则可以手动编辑
/config/jms/.xml
文件并添加

<transaction-params>
  <transaction-timeout>900</transaction-timeout>
  <xa-connection-factory-enabled>true</xa-connection-factory-enabled>
</transaction-params>

900
真的

在您的连接工厂下。

这可能有点过时,但在脱机情况下,这适用于12.2.1:

connFact = create('PubSubSelectorsConnectionFactory','ConnectionFactory')
connFact.setJNDIName('jms/PubSubSelectorsConnectionFactory')
cd('/JMSSystemResource/PubSubSelectorsJMSModule/JmsResource/NO_NAME_0/ConnectionFactory/PubSubSelectorsConnectionFactory')
set('DefaultTargetingEnabled','true')
create('PubSubSelectorsConnectionFactoryTP', 'TransactionParams')
cd('TransactionParams/NO_NAME_0')
set('XAConnectionFactoryEnabled', 'true')

我见过类似的代码片段(使用cmo)。我以前曾尝试将其插入脚本,但没有成功。所以我只是尝试通过使用WLST命令行提示符来实现这一点(与脚本中的相反)。获取一个声明“错误:仅支持getter和setter”的错误。解释了为什么它在脚本中不起作用。虽然这让我很困惑,因为创建可以工作…也许cmo无法创建是WLST脱机的一个限制。请参阅添加的编辑来回答。也许现在这是一个可能的解决办法。现在我有我在编辑中提到的解决办法。不幸的是,我真的需要在创建连接工厂的过程中完成它(我正在更改一个脚本,它是由一群人使用的更大设置的一部分,所以我试图避免使用管理控制台或任何其他手动编辑)。谢谢你的帮助。那么为什么服务器必须关闭呢?如果不是“实时”更新,为什么不能更改文件?