3

我们在测试环境中使用嵌入式 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 服务器实现相同的目标?

4

1 回答 1

5

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 dstcreate-jmsdest不会更新属性。因此,您不应在这两个命令之间启动应用程序,否则会使用默认属性自动创建资源。

如果您必须更新属性,您可以先使用例如删除物理目标asadmin delete-jmsdest org_example_foo_SomeQueue

于 2012-06-04T09:15:48.107 回答