我可以在运行时更改嵌入式Tomcat的端口吗?

时间:2014-02-19 08:34:48

标签: java tomcat java-8 tomcat8

我正在使用嵌入在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 embedded 8.0.3

我想避免重启服务器,因为启动过程需要很长时间。

2 个答案:

答案 0 :(得分:2)

你应该尝试重新启动服务器:

timer.schedule(new TimerTask() {
        @Override
        public void run() {
            tomcat.stop();
            tomcat.setPort(18181);
            tomcat.start();
            tomcat.getServer().await();
        }
},240000L);

答案 1 :(得分:1)

您需要调用其默认的http连接器destroy方法,但我不知道这是否可以在Tomcat 8中使用。