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 回答