Врезанный 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,

Другие вопросы по тегам