如何在dropwizard 1.0.0中获取applicationContextPath

时间:2016-09-08 08:44:38

标签: java dropwizard

我们在yml文件中使用服务器配置,如下所示

System.setProperty("webdriver.chrome.driver", PATH_TO_EXE_FINAL);
ChromeOptions opt = new ChromeOptions();
opt.addArguments("disable-extensions");
opt.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(opt);

我想在启动dropwizard服务时获得“applicationContextPath”。

我正在尝试使用

server:
type: simple

connector:
  type: http
  port: 8061

applicationContextPath: /administration
adminContextPath: /admin

#disable the registration of default Jersey ExceptionMappers
registerDefaultExceptionMappers: false

但我得到“/”即默认值。无论如何都有这个。

4 个答案:

答案 0 :(得分:1)

为了获取applicationContextPath,我们需要从Configuration获取ServerFactory并将其解析为SimpleServerFactory,如下所示:

((SimpleServerFactory) getConfiguration().getServerFactory()).getApplicationContextPath()

答案 1 :(得分:0)

这对我有用:

@Override
    public void run(CustomAppConfiguration customAppConfiguration , Environment environment) throws Exception {
DefaultServerFactory factory = (DefaultServerFactory) customAppConfiguration .getServerFactory();
System.out.println("CONTEXT PATH: "+factory.getApplicationContextPath());
...
}

答案 2 :(得分:0)

如果它在您的配置文件中,并且您只想读取config.yml中存在的值,那么我建议您将其作为Configuration class的一部分。无论dropwizard是否在内部以特殊方式使用和处理这些键/值,都可以通过这种方式访问​​配置中的值。

以下在dropwizard 1.0.0中为我工作:

MyApp.java:

public class MyApp extends Application<MyConfig> {
//...
@Override
public void run(MyConfig configuration, Environment environment) throws Exception {
    System.out.println(configuration.contextPath);
//...

MyConfig.java

public class MyConfig extends Configuration {
//...
   @JsonProperty("applicationContextPath")
   public String contextPath;
//...

答案 3 :(得分:0)

如果我正确理解了您的问题,那么在Dropwizard 版本1.3.8 中可以做什么?如果您使用的是简单服务器(没有 https ),则可以通过以下方式获取applicationContextPath :

server:
  type: simple
  rootPath: /*
  applicationContextPath: /administration
  adminContextPath: /admin
  connector:
    type: http
    port: 8080

有关rootPath的更多信息可以在Dropwizard Configuration Reference中找到。因此,如果您想访问:

  1. 应用 REST端点/books(这是GET的值, POST或您的Resource类方法之一中的类似注释),您可以 输入http://localhost:8080/administration/books这样的URL
  2. 指标(只能通过 admin 上下文路径访问),然后创建如下URL:
    http://localhost:8080/admin/metrics

希望有帮助。干杯!