从资源中使用 config.yaml 启动 Dropwizard
Start Dropwizard with config.yaml from resources
我有一个下拉向导问题。我将 Dropwizard 与 SBT 结合使用(效果很好)。
如果我 运行 我的应用程序我将其打包:
$ sbt clean assembly
与 运行 相比,应用程序具有:
$ java -jar APPLICATION.jar server
问题在于此命令 Dropwizard 没有加载我的配置文件 (config.yaml),该文件位于资源中。
关于 Dropwizard 文档,我总是必须将配置文件作为参数提供,例如:
$ java -jar APPLICATION.jar server config.yaml
这工作正常,它加载了应用程序,但是有没有可能告诉 Dropwizard 直接加载 config.yaml 文件,因为我在 config.yaml 文件中的配置是静态的,它总是相同的。从 Server Stage 到 Server Stage 的数据库等设置被设置为我使用 EnvironmentVariableSubstitutor 加载的环境变量。
谢谢
使用ResourceConfigurationSourceProvider:
@Override
public void initialize(final Bootstrap<ExampleConfiguration> bootstrap) {
bootstrap.setConfigurationSourceProvider(new ResourceConfigurationSourceProvider());
// The rest of initialize...
}
然后像这样调用应用程序:
java -jar APPLICATION.jar server /resource-config.yaml
(注意首字母/
)
虽然这个答案很晚,但我只是想把它放在这里。有一个肮脏的小技巧可以让它工作,这样你就不必在你的应用程序参数中提供 config.yaml。
基本上,您可以向 dropwizard 应用程序中的 运行() 方法提交一个新的 String[] 参数。
public class ApplicationServer extends Application<Config> {
public static void main(String[] args) {
String[] appArgs = new String[2];
appArgs[0] = args[0]; // This will be the usual server argument
appArgs[1] = "config.yaml";
new ApplicationServer().run(appArgs);
}
@Override
public void run(Config configuration, Environment environment) {
// Configure your resources and other application related things
}
}
我使用这个小技巧来指定我想要 运行 使用哪个配置文件。因此,我不会指定 config.yaml,而是将我的第二个参数指定为 DEV/UAT/STAGE/PROD,并将适当的配置文件传递给 运行 方法。
我有一个下拉向导问题。我将 Dropwizard 与 SBT 结合使用(效果很好)。 如果我 运行 我的应用程序我将其打包:
$ sbt clean assembly
与 运行 相比,应用程序具有:
$ java -jar APPLICATION.jar server
问题在于此命令 Dropwizard 没有加载我的配置文件 (config.yaml),该文件位于资源中。 关于 Dropwizard 文档,我总是必须将配置文件作为参数提供,例如:
$ java -jar APPLICATION.jar server config.yaml
这工作正常,它加载了应用程序,但是有没有可能告诉 Dropwizard 直接加载 config.yaml 文件,因为我在 config.yaml 文件中的配置是静态的,它总是相同的。从 Server Stage 到 Server Stage 的数据库等设置被设置为我使用 EnvironmentVariableSubstitutor 加载的环境变量。
谢谢
使用ResourceConfigurationSourceProvider:
@Override
public void initialize(final Bootstrap<ExampleConfiguration> bootstrap) {
bootstrap.setConfigurationSourceProvider(new ResourceConfigurationSourceProvider());
// The rest of initialize...
}
然后像这样调用应用程序:
java -jar APPLICATION.jar server /resource-config.yaml
(注意首字母/
)
虽然这个答案很晚,但我只是想把它放在这里。有一个肮脏的小技巧可以让它工作,这样你就不必在你的应用程序参数中提供 config.yaml。
基本上,您可以向 dropwizard 应用程序中的 运行() 方法提交一个新的 String[] 参数。
public class ApplicationServer extends Application<Config> {
public static void main(String[] args) {
String[] appArgs = new String[2];
appArgs[0] = args[0]; // This will be the usual server argument
appArgs[1] = "config.yaml";
new ApplicationServer().run(appArgs);
}
@Override
public void run(Config configuration, Environment environment) {
// Configure your resources and other application related things
}
}
我使用这个小技巧来指定我想要 运行 使用哪个配置文件。因此,我不会指定 config.yaml,而是将我的第二个参数指定为 DEV/UAT/STAGE/PROD,并将适当的配置文件传递给 运行 方法。