Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使dropwizard应用程序在启动完成之前忽略所有调用_Java_Initialization_Filtering_Dropwizard - Fatal编程技术网

Java 如何使dropwizard应用程序在启动完成之前忽略所有调用

Java 如何使dropwizard应用程序在启动完成之前忽略所有调用,java,initialization,filtering,dropwizard,Java,Initialization,Filtering,Dropwizard,我被要求设置一种方法,让dropwizard应用程序在初始化完成之前忽略所有调用。我们的应用程序使用guava缓存复制数据库;因此,所有调用都会转到它,而不是直接转到数据库。这个缓存是在初始化过程中构建的——因此,我想设置dropwizard的initialize方法,在缓存构建完成之前提供一条等待消息,而不是尝试接受任何调用。然而,我不知道该怎么做 到目前为止,我确实知道任何解决方案都必须进入主类中的initialize方法,并且有一种方法可以检查初始化是否完成。我尝试查看dropwizard

我被要求设置一种方法,让dropwizard应用程序在初始化完成之前忽略所有调用。我们的应用程序使用guava缓存复制数据库;因此,所有调用都会转到它,而不是直接转到数据库。这个缓存是在初始化过程中构建的——因此,我想设置dropwizard的initialize方法,在缓存构建完成之前提供一条等待消息,而不是尝试接受任何调用。然而,我不知道该怎么做

到目前为止,我确实知道任何解决方案都必须进入主类中的initialize方法,并且有一种方法可以检查初始化是否完成。我尝试查看dropwizard是否有任何钩子来检查初始化是否完成,但没有找到任何钩子。

HTTP(S)连接器仅在方法完成后才启动

您可以添加一个阻塞方法调用,或者使用一个来等待缓存被填充

例如:

@Override
public void run(Configuration configuration, Environment environment) {
    Cache dbCache = initializeCache(configuration);
    // Custom initializations
    // [...]

    populateCache(dbCache); // Blocks until the cache has been successfully populated
}
或者,如果异步填充缓存,可以使用
倒计时闩锁

@Override
public void run(Configuration configuration, Environment environment) {
    Cache dbCache = initializeCache(configuration);
    CountDownLatch countDownLatch = new CountDownLatch(1);
    // Custom initializations
    // [...]

    asyncPopulateCache(dbCache, countDownLatch);

    countDownLatch.await(); // Blocks until the cache has been successfully populated
}

你说的“等待信息”是什么意思?您希望JAX-RS资源以特殊的方式响应吗;从现在起,当应用程序启动时,如果您在它完成初始化之前访问它,浏览器将显示“无法访问此站点”消息。我想知道端点是否可以提供一个json,简单地说“app start;please wait”,或者类似的东西。我想这将进入主应用程序类的初始化部分。