我通过maven-tomcat-plugin使用嵌入式tomcat。在该插件的第6版中,如果我执行contextInitialized
,则服务器启动,mvn tomcat7:run
方法执行 BEFORE 连接器尝试打开端口。
代码没有变化,但当我从contextInitialized
开始时,服务器会打开端口,而然后会尝试启动$headers .=
"\r\nContent-Type: text/html; boundary=\"PHP-mixed-{$sep}\"";
方法。
为什么呢?
我问,因为我使用初始化的上下文来查找正在运行的tomcat并将其杀死,以便新实例可以获取其端口。如果tomcat无法获取端口,然后检查不再有效的contextInitialized方法。是否有另一种方法可以在不停机的情况下重新部署嵌入式tomcat?
答案 0 :(得分:1)
在tc6中,我们遇到了contextInitialized
- methode需要有关connector
的信息的问题,例如,如果使用了https
并且使用了相互认证,那么用户在{{{ 1}}。
不幸的是,在上下文初始化时无法使用的信息和在tomcat-users.xml
之前收到的请求已被加载(但在context-init之后)被拒绝。
这就是为什么我们在tc7中改变了这一点。
您出于某种原因使用多个tomcats(idc),并且解决方案应该更好地处于更高级别。
我的建议:使用不同的端口在两个tomcats上用AJP-Connector替换HTTP-Connector,安装Apache的httpd并通过重新加载httpd-config来切换tomcats。