我通过maven-tomcat-plugin使用嵌入式tomcat。在该插件的版本6中,如果我这样做mvn tomcat6:run
,则服务器将启动,并且该contextInitialized
方法将在连接器尝试打开端口之前执行。
代码没有变化,但是当我从mvn tomcat7:run
服务器启动时,打开端口,然后尝试启动contextInitialized
方法。
为什么?
我之所以问是因为我使用初始化的上下文来查找正在运行的tomcat并将其杀死,以便新实例可以使用其端口。如果tomcat无法获取端口,然后检查不再起作用的contextInitialized方法。有没有另一种方法可以在不停机的情况下重新部署嵌入式tomcat?
在tc6中,我们遇到的问题是contextInitialized
-methode需要有关the的信息connector
,例如,如果https
使用了if和相互认证,以及注册了哪些用户tomcat-users.xml
。
不幸的是,这些信息在上下文初始化时不可用,并且请求users-list
在加载之前(但是在上下文初始化之后)拒绝传入的请求。
这就是为什么我们在tc7中更改了它。
您出于某种原因(idc)使用了多个tomcat,因此最好将解决方案放在更高的级别。
我的建议:在两个使用不同端口的Tomcat上用AJP-Connector替换HTTP-Connector,安装Apache的httpd并通过重新加载httpd-config来切换Tomcat。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句