Как установить XAConnectionFactoryEnabled в автономном режиме WLST

Я пытаюсь настроить очередь JMS в Weblogic как транзакционную. Для этого требуется включить 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?

Я должен отметить, что у меня есть "мех" исправить это. Create поместит TransactionParams в том порядке, в котором создаются ConnectionFactories. Я могу просто разместить их в том порядке, в котором хочу. Однако я бы предпочел этого не делать.


person nr2588    schedule 19.09.2013    source источник


Ответы (2)


Посмотрите, подойдет ли вам что-то вроде следующего примера:

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>

под вашей фабрикой соединений.

person Display Name is missing    schedule 19.09.2013
comment
Я видел похожие фрагменты кода (с использованием cmo). Я ранее пытался вставить его в скрипт и не повезло. Поэтому я просто попытался сделать это с помощью командной строки WLST (в отличие от сценария). Получение сообщения об ошибке Ошибка: поддерживаются только геттеры и сеттеры. Объясняет, почему это не сработало в сценарии. Хотя это сбивает меня с толку, так как создание работ... - person nr2588; 20.09.2013
comment
Возможно, невозможность создания cmo является ограничением WLST в автономном режиме. - person nr2588; 20.09.2013
comment
Смотрите добавленное редактирование к ответу. Возможно, это возможный обходной путь на данный момент. - person Display Name is missing; 20.09.2013
comment
Прямо сейчас у меня есть обходной путь, о котором я упоминал в своем редактировании. К сожалению, мне действительно нужно сделать это во время создания фабрик соединений (я изменяю сценарий, который является частью более крупной установки, используемой кучей людей, поэтому я пытаюсь избежать использования консоли администратора или любого другого другие ручные правки). Спасибо за помощь. - person nr2588; 20.09.2013
comment
Так почему сервер должен быть недоступен? Если это не живое обновление, почему вы не можете просто изменить файл? - person Display Name is missing; 21.09.2013
comment
1) Ограничения, связанные с окружающей средой. 2) Не меняется ли этот файл при развертывании в соответствии со спецификациями в сценариях WLST? Если да, то не потребует ли это изменения файла каждый раз, когда что-то переустанавливается? - person nr2588; 24.09.2013

Это может быть немного устаревшим, но в автономном режиме это работает для 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')
person BartekK    schedule 19.03.2016