我写了一个我需要用tomcat部署的小servlet。我的服务器是tomcat 6.我首先尝试拖动war文件然后解压缩,把我无法访问url(404错误)。然后我甚至删除了部署并尝试使用tomcat管理器。当我单击部署时显示“确定”但未显示在已部署的应用程序列表中。
我使用Eclipse(ganymede)来创建war文件。解压缩的目录结构看起来很好。我在localhost:8080上运行。这是我的web.xml。也许这里有问题?
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<servlet>
<servlet-name>Auth</servlet-name>
<servlet-class>serv.Authenticate</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Auth</servlet-name>
<url-pattern>/authenticate</url-pattern>
</servlet-mapping>
</web-app>
我读过,也许我需要对server.xml做些什么。但我在那里环顾四周,没有任何tomcat的默认网络应用程序的条目。如何注册我的应用程序以便tomcat像其他人一样提供服务?
答案 0 :(得分:0)
web.xml看起来不错,但是如果不了解更多关于环境的信息,就无法知道为什么要获得404。
问题可能是servlet未加载或加载,servlet无法找到URL。
要查看是否正在加载servlet,请在servlet的init方法中添加一条日志语句(System.out将执行)。将以下行添加到servlet元素中,以便servlet不会按需加载但在启动时加载:
<load-on-startup>0</load-on-startup>
然后您可以检查是否正在识别和加载servlet。
然后向doGet / doPost等方法添加一条日志语句,以输出请求对象的.getPathInfo。将通配符添加到servlet映射以及测试时可能会有所帮助:
<url-pattern>/authenticate/*</url-pattern>