2012-03-27 65 views
3

我們在測試環境中使用嵌入式Glassfish服務器。我們使用org.glassfish.embeddable.CommandRunner接口來執行管理任務(即我們做asadmin與標準獨立GlassFish服務器的)嵌入式Glassfish和`imqcmd`

例子:

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服務器相同?

+0

不知道這是多麼有用,但該命令在glassfish中是這樣的:'glassfish-4.1/mq/bin/imqcmd' – Thufir 2015-03-01 09:05:43

回答

4

而不是使用imqcmd,您可以使用asadmin子命令create-jmsdest來創建JMS物理目標。

documentationcreate-jmsdest

通常情況下,你使用create-jms-resource子命令來創建具有指定物理目的地的Name屬性JMS目的地資源。物理目標是在運行使用目標資源的應用程序時自動創建的。如果要使用非默認屬性設置創建物理目標,請使用create-jmsdest子命令。

如果不爲create-jms-resource指定Name屬性,物理目的地的名稱具有相同的名稱作爲目標資源(用下劃線替換任何斜槓的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