web-dev-qa-db-ja.com

Dropwizardのデフォルトポートを変更する

DropwizardベースのJersey RESTサービスはデフォルトポート8080(service)および8081(admin)で実行されていますが、デフォルトポートをあまり一般的ではないものに変更する必要があります。そうするための情報を見つけることができますが、誰かがそうするように私を指すことができますか?

47
user1965449

Yaml設定ファイルのポートを更新できます:

http:
  port: 9000
  adminPort: 9001

詳細については、 http://www.dropwizard.io/0.9.2/docs/manual/configuration.html#http を参照してください。

[〜#〜] edit [〜#〜]

Dropwizard 0.7.x、0.8.x、0.9.xに移行した場合は、次を使用できます。

server:
  applicationConnectors:
  - type: http 
    port: 9000
  adminConnectors:
  - type: http
    port: 9001
90
condit

Dropwizard 0.6では、コマンドラインから次のように設定できます。

Java -Ddw.http.port=9090 -Ddw.http.adminPort=9091 -jar yourapp.jar server yourconfig.yml

Dropwizard 0.7を使用する場合、システムプロパティは次のように設定されます。

Java -Ddw.server.applicationConnectors[0].port=9090 -Ddw.server.adminConnectors[0].port=9091 -jar yourapp.jar server yourconfig.yml

システムプロパティを使用してポートを構成する場合、ymlでポートを設定する必要もあるようです(とにかく、システムプロパティが優先されます)。少なくとも、Dropwizard 0.7ではこれが起こっています。 YAMLポート設定の例:

server:
  applicationConnectors:
  - type: http
    port: 8090
  adminConnectors:
  - type: http
    port: 8091

これらのポートをYAMLに入れないと、Dropwizardは次のように文句を言います。

Exception in thread "main" Java.lang.IllegalArgumentException: Unable to override server.applicationConnectors[0].port; node with index not found.
30
Ferran Maylinch

これは、テストアプリケーション(0.7.x、0.8.x、0.9.x)で行ったことです。

public class TestConfiguration extends Configuration {

  public TestConfiguration() {
    super();
    // The following is to make sure it runs with a random port. parallel tests clash otherwise
    ((HttpConnectorFactory) ((DefaultServerFactory) getServerFactory()).getApplicationConnectors().get(0)).setPort(0);
    // this is for admin port
    ((HttpConnectorFactory) ((DefaultServerFactory) getServerFactory()).getAdminConnectors().get(0)).setPort(0);   } }

0は、使用可能なランダムポートを提供します。

私はそれがきれいではないことを知っていますが、プログラムでそれを行うより良い方法を見つけることができませんでした。ポートが並行して実行されるため、ポートが異なる統合テスト間で衝突しないことを確認する必要がありました。テストごとにランダムにymlファイルを作成することは、私にとってはugいことでした。

ああ、これは後で実行中のポートを取得する方法です:

@Override
  public void run(TestConfiguration configuration, Environment environment) throws Exception {
    this.environment = environment;
    // do other stuff if you need to
  }

  public int getPort() {
    return ((AbstractNetworkConnector) environment.getApplicationContext().getServer().getConnectors()[0]).getLocalPort();
  }
13
Natan

以前はdropwizardを使用したことがなく、ジャージを使用して簡単なサービスを作成していました。私はユーザーズマニュアルを見ることにし、すぐに設定の説明を見つけました。

Dropwizard設定マニュアル

サービスの開始時に特別なJavaシステムプロパティを渡すことにより、構成設定をオーバーライドできます。オーバーライドは、プレフィックスdw。で始まり、その後にオーバーライドされる構成値へのパスが続く必要があります。使用するHTTPポートは、次のようにサービスを開始できます。

Java -Ddw.http.port=9090 server my-config.json

あなたに適していますか?

5
MartenCatcher

実行時に変更したい場合

-Ddw.server.applicationConnectors[0].port=9090  -Ddw.server.adminConnectors[0].port=9091

バージョン1.0.5で使用しました

3
Vikash Tiwari

Dropwizard 0.6.2の場合、サービスクラスで以下のようにプログラムでポートを変更できます。

import com.yammer.dropwizard.config.Configuration;
import com.yammer.dropwizard.config.Bootstrap;
import com.yammer.dropwizard.config.Environment;
import com.yammer.dropwizard.config.HttpConfiguration;
import com.yammer.dropwizard.Service;

public class BlogService extends Service<Configuration> {

public static void main(String[] args) throws Exception {
    new BlogService().run(new String[] {"server"});
}

@Override
public void initialize(Bootstrap<Configuration> bootsrap) {
    bootsrap.setName("blog");
}    


public void run(Configuration configuration, Environment environment) throws Exception {

    HttpConfiguration config = new HttpConfiguration();
    config.setPort(8085);
    config.setAdminPort(8086);
    configuration.setHttpConfiguration(config);
}

}
1
Prasad Revanaki

Dropwizard 0.8.0の場合-

あなたのYAMLファイルは-

server:
    type: simple
    connector:
      type: http
      port: 80

コマンドラインからポートを変更する場合は、

Java -Ddw.server.connector.port=9090 -jar yourapp.jar server yourconfig.yml

コマンドは、YAMLファイルにエントリがある場合にのみ機能します。 DWには、オーバーライド可能なデフォルト値が必要です。

1
Jay Khatwani

ポートを設定する必要がありましたが、コマンドラインから設定できませんでした。私はこの解決策になりました:

public static void main(String[] args) throws Exception {
    String applicationPort = "9090";
    String adminPort = "9091";

    System.setProperty("dw.server.applicationConnectors[0].port", applicationPort);
    System.setProperty("dw.server.adminConnectors[0].port", adminPort);

    new Main().run(args);
}

これは、Dropwizard 1.3.0-rc7

0
Thomas Sundberg