我无法在“.listen()”方法之外获得任何配置读数。
public class APIVerticle extends AbstractVerticle {
@Override
public void start(Future<Void> fut) {
System.out.println("Config: " + config().getInteger("http.port")); //prints null
vertx
.createHttpServer(serverOptions)
.requestHandler(router::accept)
.listen(
config().getInteger("http.port", 8080), //gets 8082
result -> {
if (result.succeeded()) {
fut.complete();
} else {
fut.fail(result.cause());
}
}
);
}
}
我的配置文件:
{
"http.port": 8082
}
它被打包成一个带有maven-shade-plugin
插件的胖罐。
有人知道为什么吗?
答案 0 :(得分:1)
那是因为您的AbstractVerticle没有收到任何部署选项。这是定制的。您可以在Starter类中看到它是如何完成的示例:
String confArg = args.map.get("-conf");
JsonObject conf;
if (confArg != null) {
try (Scanner scanner = new Scanner(new File(confArg)).useDelimiter("\\A")){
String sconf = scanner.next();
try {
conf = new JsonObject(sconf);
} catch (DecodeException e) {
log.error("Configuration file " + sconf + " does not contain a valid JSON object");
return;
}
} catch (FileNotFoundException e) {
try {
conf = new JsonObject(confArg);
} catch (DecodeException e2) {
log.error("-conf option does not point to a file and is not valid JSON: " + confArg);
return;
}
}
} else {
conf = null;
}
...
deploymentOptions = new DeploymentOptions();
deploymentOptions.setConfig(conf)
HttpServer默认接收这些DeploymentOptions。 如果您有传递到自定义Verticle的选项,请将它们作为.deployVerticle
的第二个参数传递