我们一直在嵌入式模式下成功使用 tomcat 7.0.19。然而最近由于我们关注领域的一些修复,我们决定迁移到 tomcat 7.0.32。大多数事情都按预期使用相同的代码和更新版本,但是由于某种原因战争部署效果不佳。我在我的 tomcat 上注册了几个 servlet。面临以下2个问题,
嵌入式 tomcat 行为从 7.0.19 更改为 7.0.32。为了详细说明这一点,让我解释一下行为差异,在 7.0.19 中,我可以部署我的应用程序,当我点击“host:port/contextpath”时,它会加载应用程序的起始页面(即欢迎页面,此页面以 UI 为中心,并且不需要服务器干预,所以我的 servlet 都没有被调用)。但是,对于 7.0.32,相同的 url 会导致我的 servlet 被调用。
所以为了调试问题,我注释了我的大部分代码,这样我就有了一个普通的 tomcat 实现,只是非常基本的东西,即设置引擎名称、默认主机、设置主机属性、添加连接器(nio,具有默认属性)并部署战争。没有 servlet 和其他东西,只是为了检查非常基本的东西是否有效。令我惊讶的是,当我运行这段代码时,它仍然在我的 servlet 中出现同样的问题,这是怎么发生的,既然我的代码被注释了,它没有注册任何 servlet,它仍然从哪里找到它?嵌入式 tomcat 是否存储了一些旧引用,这些引用在后续运行中没有被清理?我尝试更改端口,但这也无济于事。
我在这里碰壁,无法理解这种奇怪的行为,如果我弄清楚#2,只有这样我才能在#1上取得一些进展。
提前致谢,
维克拉姆