Альтернатива:
ModelNode res = AS7CliUtils.executeRequest("/deployment=* /:read-resource", ctx.getAS7Client());
{
"outcome" => "success",
"result" => [{
"address" => [("deployment" => "jboss-as-wicket-ear-ear.ear")],
"outcome" => "success",
"result" => {
"content" => [{"hash" => bytes { ... }}],
"enabled" => true,
"name" => "jboss-as-wicket-ear-ear.ear",
"persistent" => true,
"runtime-name" => "jboss-as-wicket-ear-ear.ear",
"subdeployment" => {
"jboss-as-wicket-ear-ejb.jar" => undefined,
"jboss-as-wicket-ear-war.war" => undefined
},
"subsystem" => {"datasources" => undefined}
}
}]
}
JBoss AS CLI-клиент Lib содержит некоторые API для этого, не может найти его прямо сейчас.
Это примитивная реализация разбора запроса (не поддерживает вложенные значения и не заботится об экранировании и т. Д.).
/**
* Parse CLI command into a ModelNode - /foo=a/bar=b/:operation(param=value,...) .
*
* TODO: Support nested params.
*/
public static ModelNode parseCommand(String command) {
return parseCommand(command, true);
}
public static ModelNode parseCommand(String command, boolean needOp) {
String[] parts = StringUtils.split(command, ':');
if(needOp && parts.length < 2) throw new IllegalArgumentException("Missing CLI command operation: " + command);
String addr = parts[0];
ModelNode query = new ModelNode();
// Addr
String[] partsAddr = StringUtils.split(addr, '/');
for(String segment : partsAddr) {
String[] partsSegment = StringUtils.split(segment, "=", 2);
if(partsSegment.length != 2) throw new IllegalArgumentException("Wrong addr segment format - need '=': " + command);
query.get(ClientConstants.OP_ADDR).add(partsSegment[0], partsSegment[1]);
}
// No op?
if(parts.length < 2) return query;
// Op
String[] partsOp = StringUtils.split(parts[1], '(');
String opName = partsOp[0];
query.get(ClientConstants.OP).set(opName);
// Op args
if(partsOp.length > 1){
String args = StringUtils.removeEnd(partsOp[1], ")");
for(String arg : args.split(",")) {
String[] partsArg = arg.split("=", 2);
query.get(partsArg[0]).set(unquote(partsArg[1]));
}
}
return query;
}// parseCommand()
No maven, just ant. Спасибо за это, попробуем завтра. Где документация для такого рода вещей? – blank
@BedwyrHumphreys Большая часть из них находится здесь https://docs.jboss.org/author/display/AS71/Management+API+reference. Другое, что вам просто нужно изучить структуру. Вы можете увидеть обзор, если вы выполните $ JBOSS_HOME/bin/jboss-cli.sh -connect "/: read-resource" >> output.txt –
Пара точек - я думаю, op.get (OP) должен быть op. get (ClientConstants.OP) и ClientConstants.FAILED, похоже, не существует в org.jboss.as.controller.client.helpers.ClientConstants – blank