【发布时间】:2012-07-15 11:14:45
【问题描述】:
- 我基于Tomcat HelloWorld Servlet with Eclipse创建了一个测试项目
- 并尝试像使用 Tomcat 7 一样从 Eclipse 运行它,我已将其配置为在 127.0.0.1 上运行 - 但我在 127.0.0.1/helloworld/HelloWorld 处得到
Page cannot be found - 我还尝试导出为 war 文件并将其部署到作为 Windows 服务运行的(否则工作的)Tomcat 服务器 - 并使用 Tomcat 应用程序管理器进行部署 - manifest.mf 并且这些类很好地复制到了 tomcat/webapps/helloworld ,但尝试导航到 127.0.0.1/helloworld/HelloWorld 再次失败,显示
HTTP Status 404
从默认的@WebServlet 到 web.xml 配置
接下来,在 HelloWorld.java 中,我尝试注释掉
//@WebServlet("/HelloWorld")
然后添加特定于 web 应用程序的 web.xml 配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>
但结果还是一样——没有反应!
解决方案?
- 鉴于链接教程提供了 Tomcat 6 的说明,我是否应该进行一些更改以使其与 Tomcat 7 一起使用?
- 具体来说,Eclipse添加的默认
@WebServlet("/HelloWorld")够不够用? Servlet 3.0 的基于注释的配置需要什么才能工作(没有 web.xml)? - 或者是有什么东西阻止了全局 tomcat 服务器级别的任何 Web 应用程序部署?我已经稍微更改了服务器配置,不幸的是我不记得具体是什么,除了让它在 127.0.0.1 而不是 127.0.0.1:8080 上服务
【问题讨论】:
-
在 webapp 的根目录下添加 index.html 文件。如果您在浏览器中点击此选项,则应用程序已成功部署为预期路径,问题出在 Servlet 映射上。如果不是,则应用程序未部署在预期路径。
-
@Alan 谢谢!:我添加了 /tomcat/webapps/helloworld/index.html 但浏览到 127.0.0.1/helloworld/HelloWorld 和 127.0.0.1/helloworld 都没有显示任何新的响应 - 似乎像后者一样,即未部署应用程序 - 我如何从这里继续进行故障排除?
-
你不必指定端口,因此是 127.0.0.1:8080/helloworld/HelloWorld?
-
我遇到了这个问题:由于某种原因,我的部署服务器上的 tomcat 设置忽略了
@WebServlet注释,但是如果我将信息冗余地添加到 web.xml 中,那么 eclipse 不会喜欢它,所以解决方案是删除注释并只使用 web.xml (我也在使用过滤器,所以删除 web.xml 不是一个选项)。
标签: java eclipse tomcat deployment webserver