1

我正在尝试在 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。我可以按照我想要的顺序放置它们。但是,我宁愿不这样做。

4

2 回答 2

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

编辑:啊可能。如果您确实需要离线执行并且 wlst 无法正常工作,您可以手动编辑<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>

在您的连接工厂下。

于 2013-09-19T23:23:28.897 回答
1

这可能有点过时,但在离线时这适用于 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')
于 2016-03-19T21:25:49.893 回答