Врезанный Glassfish и `imqcmd`
Мы используем встроенный сервер Glassfish в нашей среде тестирования. Мы используем org.glassfish.embeddable.CommandRunner
интерфейс для выполнения административных задач (то есть, что мы делаем с asadmin
со стандартным автономным сервером Glassfish)
Пример:
GlassFish glassfish = GlassFishRuntime.bootstrap( bp ).newGlassFish( gfp );
CommandRunner commandRunner = glassfish.getService( CommandRunner.class );
commandRunner.run(
"create-jms-resource",
"--restype",
"javax.jms.Queue",
"SOME_QUEUE_NAME"
);
Теперь в командной строке я могу установить параметры очереди с imqcmd
, Например
imqcmd -u admin -passfile ../password.txt update dst -n SOME_QUEUE_NAME -t q -o maxBytesPerMsg=-1 -f
Есть ли способ добиться того же с помощью встроенного сервера Glassfish?
1 ответ
Вместо того, чтобы использовать imqcmd
, вы можете использовать asadmin
субкоманда create-jmsdest
создать физическое назначение JMS.
Из документации по create-jmsdest
:
Как правило, вы используете
create-jms-resource
субкоманда для создания ресурса назначения JMS, который имеет свойство Name, которое указывает физическое назначение. Физический пункт назначения создается автоматически при запуске приложения, которое использует ресурс назначения. Использоватьcreate-jmsdest
субкоманда, если вы хотите создать физическое назначение с нестандартными настройками свойств.
Если вы не укажете свойство Name для create-jms-resource
имя физического назначения имеет то же имя, что и ресурс назначения (заменяя любую косую черту в имени JNDI подчеркиванием).
Таким образом asadmin
команды, которые вы хотите выполнить, например:
create-jms-resource --restype javax.jms.Queue org/example/foo/SomeQueue
create-jmsdest --desttype queue --property maxBytesPerMsg=-1:maxTotalMsgBytes=-1 org_example_foo_SomeQueue
Обратите внимание, что (в отличие от imqcmd update dst
) create-jmsdest
не обновляет свойства, если ресурс уже существует. Поэтому не следует запускать приложение между двумя командами, в противном случае ресурс автоматически создается со свойствами по умолчанию.
Если вам нужно обновить свойства, вы можете сначала удалить физическое назначение, используя, например, asadmin delete-jmsdest org_example_foo_SomeQueue
,