2

Java 8 アプリケーションに埋め込まれた Tomcat を使用しています。次のように実行時にポートを切り替えようとしました:

 Tomcat tomcat = new Tomcat();
    tomcat.setPort(18080);

    Timer timer =new Timer();
    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            tomcat.setPort(18181);
        }
    },240000L);

しかし、うまくいかないようです。タイマー遅延に達した後も、wepapp はポート 18080 にのみ応答します。

実行時にも切り替えは可能ですか? どうすればできますか?

編集:

JDK 1.8.0b129 で Tomcat 組み込み 8.0.3 を使用する

起動処理に時間がかかるため、サーバーの再起動は避けたいです。

4

2 に答える 2

2

サーバーを再起動してみてください:

timer.schedule(new TimerTask() {
        @Override
        public void run() {
            tomcat.stop();
            tomcat.setPort(18181);
            tomcat.start();
            tomcat.getServer().await();
        }
},240000L);
于 2014-02-19T10:47:04.350 に答える
1

デフォルトの http コネクタの destroy メソッドを呼び出す必要がありますが、Tomcat 8 でそれが可能かどうかはわかりません。

于 2014-02-19T13:19:09.517 に答える