2012-10-28 69 views
0

我们在嵌入式模式下成功地使用了tomcat 7.0.19。不过最近由于我们关注的一些问题,我们决定迁移到tomcat 7.0.32。大多数情况下,预期使用相同的代码和更新的版本,但是由于某种原因,战争部署一直没有成功。我有几个servlet在我的tomcat上注册。面对以下2个问题,嵌入式Tomcat下的Web应用程序部署7.0.32

  1. 有事从嵌入的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取得了一些进展。

由于提前,

维克拉姆

+0

您可以发布您的代码的相关部分?我会说如果不查看代码(web.xml和servlet)就不可能提供帮助。 – home

+0

请尝试查明引入上述行为的实际版本。检查7.0.20和7.0.31之间的版本,使用二进制搜索方法没有太多的工作。 –

回答

0

想通了什么问题是。

在相反的顺序,

2 - 这实际上是用香草嵌入式Tomcat的代码调用也从未被登记在首位的servlet的一个怪异的行为。这里的问题与日食有关,因为某些原因,它吸取了我的课程的老参考。当我从eclipse之外运行相同的代码时,即通过命令提示符,事情恢复正常。

1 - 此问题与Web部署有关,在我的代码中,我另外将我的类装载器设​​置为WebappLoader,并最终将我的应用程序JAR添加到其中。这是出于任何原因与7.0.19工作正常,但没有与7.0.32,当我外化所有我的罐子在应用程序启动时通过classpath加载这个问题也解决了。

感谢,

玉萍

相关问题