我使用Tomcat 7
开发了一个Java Web应用程序,Oracle JDK 1.7
开发了NeatBeans 7.3
。我的应用程序在我的本地电脑上运行,没有任何错误。
但在我托管我的应用程序之后,我无法访问servlet。它给了我404
错误。我没有在我的应用程序中使用web.xml
来映射servlet。我使用了annotation
。
托管服务器使用Tomcat 7
和Open JDK 1.7
。
可能是什么问题?我该如何解决这个问题?
新更新
我购买托管的地方让我cPanel
上传文件。没有地方可以上传war
文件或将文件上传到tomcat中的webapps
导演。所以我将文件上传到public_html
目录。我认为这可能是个问题。因为当我试图访问像www.mysite.com/A
这样的servlet时,服务器会在root
directoy中搜索它。但实际上它并不存在。所以它会给出404
错误。
我认为这可能是个问题。有什么建议吗?
已更新
注释如下所示
@WebServlet(name = "AddCustomer", urlPatterns = {"/AddCustomer"})
从DropBox下载Servlet。
目录结构。
答案 0 :(得分:1)
将项目部署到tomcat后,如果类存在于该位置,请检入“tomcat7 \ work \ Catalina \ localhost \ your app”。如果那里的课程那么它应该不是问题。
答案 1 :(得分:0)
检查以下内容:
最后可能会发布你weblog的一部分以及你正在调用的网址
修改强>
所以这是你的代码树,但已经部署到你的tomcat webapp目录中了什么?您的编译类是否在WEB-INF下?
修改强> 您是否收到有关在public_html中托管的webapp的新信息?我建议您联系您托管服务器提供商的资源,以了解如何正确部署 - 可能甚至不可能。
您可以尝试从亚马逊进行为期一年的EC2试用
答案 2 :(得分:0)
注释不能“开箱即用”,您仍需要tell
Tomcat来查找带注释的Servlet
类。要做到这一点,您需要使用web.xml
的正确版本:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
我没有使用NetBeans,但是像Eclipse一样,它可能具有项目属性,可以让您将Dynamic Web Project构面指定为 Servlet 3.0 值,该值将转换为上面显示的web.xml
行
您应该检查项目的WEB-INF
web.xml
文件夹或尝试正确导出 - WAR文件应该(必须?)包含WEB-INF/web.xml
文件。
通过web.xml
标题中的Servlet 3.0版本“告诉它”。对于早期版本,Tomcat不会期望注释标记的servlet,即您必须在XML中手动列出它们。
至于更新的问题 - 你得到404,因为Apache HTTP Server(可能是安装的)不了解WAR或JSP文件,你需要配置它以将请求转发给Tomcat,这可能是在另一个端口上(默认为8080) - 这称为 AJP或HTTP代理,即Apache服务器充当Tomcat的前端代理。 Stackoverflow上有关于该主题的manny答案。
您没有将WAR文件部署到public_html
,因为这是部署PHP或Perl Web应用程序的地方。
如果您确实安装了Tomcat,请在哪个端口以及Java Web应用程序的部署位置与您的托管服务提供商联系。