【问题标题】:Restarting embedded tomcat重启嵌入式tomcat
【发布时间】:2016-12-23 10:10:00
【问题描述】:

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

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

为什么?

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

【问题讨论】:

    标签: java tomcat tomcat7 tomcat6 maven-tomcat-plugin


    【解决方案1】:

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

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

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

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

    我的建议:在使用不同端口的两个 tomcat 上用 AJP-Connector 替换 HTTP-Connector,安装 Apache 的 httpd 并通过重新加载 httpd-config 来切换 tomcat。

    AJP details.

    【讨论】:

    • 啊,谢谢你的解释,这很有道理。您对解决我遇到的问题有什么好的建议吗(只有在所有内容都正确初始化后才能使用一台服务器)?
    猜你喜欢
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 2018-09-18
    • 2023-03-26
    • 2020-12-19
    • 2019-02-04
    • 2016-08-19
    相关资源
    最近更新 更多