在沒有手動編輯standalone.xml(或domain.xml)的情況下配置JBoss 7的適當選項是什麼。在不手動編輯standalone.xml的情況下配置JBoss 7
我們有一個相當複雜的配置(JavaMail,很多數據源等),編輯XML不是一個好的選擇,因爲重寫時註釋會丟失,並且通常會使部署更改變得非常困難。
我看到的一個選項是命令行界面,至少你可以編寫腳本,但它似乎會改變它與創建它不同。還有其他什麼好的選擇?
在沒有手動編輯standalone.xml(或domain.xml)的情況下配置JBoss 7的適當選項是什麼。在不手動編輯standalone.xml的情況下配置JBoss 7
我們有一個相當複雜的配置(JavaMail,很多數據源等),編輯XML不是一個好的選擇,因爲重寫時註釋會丟失,並且通常會使部署更改變得非常困難。
我看到的一個選項是命令行界面,至少你可以編寫腳本,但它似乎會改變它與創建它不同。還有其他什麼好的選擇?
對於批量配置更改,CLI腳本可能是您最好的選擇。
另一種選擇就是創建自己的程序來完成它。有一個native Java API你可以使用,也可以參考detyped API的模型參考。這將使您可以選擇在添加或更改之前檢查資源和/或資源值。
final ModelNode op = new ModelNode();
op.get(ClientConstants.OP).set("read-resource");
op.get(ClientConstants.OP_ADDR).set("/subsystem=logging/console-handler=CONSOLE");
final ModelControllerClient client = ModelControllerClient.Factory.create("localhost", 9999);
final ModelNode result = client.execute(op);
if (result.get(ClientConstants.OUTCOME).asString().equals(ClientConstants.SUCCESS)) {
// The operation was successful
} else {
// Unsuccessful get the failure description
final String msg;
if (result.hasDefined(ClientConstants.FAILURE_DESCRIPTION)) {
if (result.hasDefined(ClientConstants.OP)) {
msg = String.format("Operation '%s' at address '%s' failed: %s", result.get(ClientConstants.OP), result.get(ClientConstants.OP_ADDR), result.get(ClientConstants.FAILURE_DESCRIPTION));
} else {
msg = String.format("Operation failed: %s", result.get(ClientConstants.FAILURE_DESCRIPTION));
}
} else {
msg = String.format("An unexpected response was found. Result: %s", result);
}
}
爲什麼不使用Web管理控制檯?包含在standalone.xml中的大多數屬性都可以使用UI進行配置。
使用網絡管理控制檯依賴於不能保證一致發生或沒有丟失任何東西的手動工作。這對於一次性的事情來說很好,但對於保持可重複配置來說很糟糕。 – Yishai
如何在執行命令後停止ModelControllerClient進程。即使我使用modelControllerClient.close();它仍然繼續運行; –
關閉它後絕對不能運行。 –