Vertx不会提取extern conf文件

时间:2015-09-29 10:51:48

标签: java guice vert.x

我用这种方式使用vertx和guice:

public static void main(String[] args) throws InterruptedException {


        final Logger logger = Logger.getLogger(StarterVerticle.class);
        ClusterManager mgr = new HazelcastClusterManager();
        VertxOptions options = new VertxOptions().setClusterManager(mgr);
        Vertx.clusteredVertx(options, res -> {
            DeploymentOptions deploymentOptions = new DeploymentOptions().setConfig(config);

            if (res.succeeded()) {
                Vertx vertx = res.result();
                //  Injector injector = Guice.createInjector(new AppInjector(vertx));
                Injector injector = Guice.createInjector(new AppInjector(vertx,deploymentOptions));
                vertx.deployVerticle(injector.getInstance(VertxHttpServerVerticle.class), deploymentOptions);
                vertx.deployVerticle(injector.getInstance(Verticle1.class), deploymentOptions);
                vertx.deployVerticle(injector.getInstance(Verticle2.class), deploymentOptions);
                logger.info("World Map Service module deployed on vertx!");
            } else {
                logger.error("Error initiating Vertx cluster");
            }
        });
    }

我将my-app.json放到我的主要项目目录my-app-conf.json

{
  "http.port" : 8082
}

VertxHttpServerVerticle:

public class VertxHttpServerVerticle extends AbstractVerticle {


    @Override
    public void start(Future<Void> fut) {

 ....
                .createHttpServer()
                .requestHandler(router::accept)
                .listen(
                        // Retrieve the port from the configuration,
                        // default to 8090.
                        config().getString("http.port", "8090"),

不会收集http.port。 我用这种方式执行了jar:

 java -jar web/build/libs/com.my-app-all.jar -conf wm-conf.json

我仍然可以获得config().getString("http.port") null

知道我错过了什么吗?

2 个答案:

答案 0 :(得分:3)

如果你想通过-conf参数进行传递配置,你的初始类应该扩展AbstractVerticle

如果您通过vertx.deployVerticle()部署Verticle,则应将http.port手动传递到config,然后将此类对象传递给DeploymentOptions实例。

您可以在vert.x documenation中了解有关Verticle部署的更多信息。

答案 1 :(得分:0)

您的jar尝试从web / build / libs目录加载配置,而文件实际上位于项目根目录中。尝试使用相对路径&#34; ../../../ wm-conf.json&#34;或者只是移动conf文件来协助jar。