重新启动嵌入式 tomcat

Restarting embedded tomcat

我通过 maven-tomcat-plugin 使用嵌入式 tomcat。在该插件的版本 6 中,如果我执行 mvn tomcat6:run,服务器启动并且 contextInitialized 方法执行 BEFORE 连接器尝试打开端口。

代码没有变化,但是当我从 mvn tomcat7:run 开始时,服务器打开端口并且 THEN 尝试启动 contextInitialized 方法。

为什么?

我问是因为我使用初始化的上下文找到 运行 tomcat 并杀死它,以便新实例可以占用它的端口。如果 tomcat 获取端口失败,然后检查不再起作用的 contextInitialized 方法。有没有另一种方法可以在不停机的情况下重新部署嵌入式 tomcat?

在 tc6 中,我们遇到了 contextInitialized 方法需要有关 connector 的信息的问题,例如,如果使用 https 和相互身份验证以及用户注册的信息tomcat-users.xml.

不幸的是,这些信息在上下文初始化时不可用,并且在 users-list 加载之前(但在上下文初始化之后)传入的请求被拒绝。

这就是我们在 tc7 中更改它的原因。

您出于某种原因(idc)正在使用多个 tomcat,解决方案最好在更高级别上。

My suggestion: Replace the HTTP-Connector by a AJP-Connector on both tomcats using different ports, install Apache's httpd and switch the tomcats by reload httpd-config.

AJP details.