我正在使用嵌入在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
我想避免重启服务器,因为启动过程需要很长时间。
答案 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中使用。