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

时间:2013-09-19 22:31:38

标签: 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('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。我可以按照我想要的顺序放置它们。但是,我宁愿不这样做。

2 个答案:

答案 0 :(得分:1)

查看以下示例之类的内容是否适合您:

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为我们工作

编辑:啊,可能。如果您确实需要离线执行并且无法运行,您可以手动编辑<domain home>/config/jms/<jms module>.xml文件并添加

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

在您的连接工厂下。

答案 1 :(得分:0)

这可能有点过时但在离线状态下适用于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')