【问题标题】:Start Dropwizard with config.yaml from resources从资源中使用 config.yaml 启动 Dropwizard
【发布时间】:2018-03-13 17:12:56
【问题描述】:

我有一个 dropwizard 问题。我将 Dropwizard 与 SBT 一起使用(效果很好)。 如果我运行我的应用程序,我会将其打包:

$ sbt clean assembly

然后运行应用程序:

$ java -jar APPLICATION.jar server

问题在于这个命令 Dropwizard 没有加载我的配置文件 (config.yaml),它位于资源中。 关于 Dropwizard Docs,我总是必须将配置文件作为参数提供,例如:

$ java -jar APPLICATION.jar server config.yaml

这工作正常,它会加载应用程序,但是否有可能告诉 Dropwizard 直接加载 config.yaml 文件,因为我在 config.yaml 文件中的配置是静态的,并且始终相同。从服务器阶段更改为服务器阶段的数据库等设置被设置为环境变量,我使用 EnvironmentVariableSubstitutor 加载。

谢谢

【问题讨论】:

  • 您可以在Configuration 对象中为您的属性提供默认值,或者使它们不需要。我认为如果它们具有默认值或未指定为@NotEmpty / @NotNull,那么如果您不加载配置文件,Dropwizard 不会抱怨。
  • @condit 感谢您的链接,也许我的问题不清楚,我的意思是 dropwizard 中的默认值是资源文件夹中的 yaml 文件。有没有默认配置。因此,如果我启动应用程序而不传递 config.yaml 作为参数,他会查看资源文件夹中是否有配置文件?

标签: java maven sbt dropwizard


【解决方案1】:

使用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

(注意最初的/

【讨论】:

    【解决方案2】:

    虽然这个答案很晚,但我只是想我会把它放在这里。有一个肮脏的小技巧可以让它工作,这样你就不必在你的应用程序参数中提供 config.yaml。

    基本上,您可以向 dropwizard 应用程序中的 run() 方法提交一个新的 String[] args。

    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 并将适当的配置文件传递给 run 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-17
      • 1970-01-01
      • 2013-09-08
      相关资源
      最近更新 更多