0

我使用 Gradle 构建了一个小型 Web 应用程序。使用嵌入式 Jetty 服务器似乎进展顺利,但当我尝试将 WAR 文件复制到独立服务器时,情况就不那么好了。

我使用 gradle war 插件来组装战争。

运行 gradle jettyRunWar 工作正常。

将战争复制到 Jetty webapps 文件夹并运行 Jetty 失败,但出现以下异常:

java.lang.IllegalStateException: No such servlet servlet_name

但是,在嵌入式 Jetty 服务器中可以毫无问题地找到并使用这个相同的 servlet。

如果我手动将爆炸的战争复制到 webapps 目录,也会发生同样的问题。

Spring web 和 Spring mvc 库被复制并出现在 WEB-INF/libs 目录中,所以这不是找不到 Spring 的问题(或者是吗?)

我使用的是 Jetty 9.1,并且我的 web.xml 文件是为 Servlets v3 配置的。

我也在使用 Spring 3.2。我正在编写的 Web 应用程序是一个 RESTful 服务,使用 @Controller 注释来路由请求。

这应该就像复制战争一样简单,但似乎并非如此。在这里做什么有点茫然,有什么想法吗?

谢谢!

4

1 回答 1

0

有时答案就在你眼前……发布后我意识到我的 servlet 映射在我的 servlet 声明之前。虽然这并没有给 Gradle Jetty 带来问题(不知道为什么),但它让 Jetty 不高兴。不知道为什么我一开始就改变了顺序......

简而言之,Jetty 似乎没有找到 servlet,因为它还没有被声明。

于 2013-10-05T01:22:19.170 回答