Java 找不到页面404 Apache Tomcat
我正在尝试学习使用jersey和servlet创建REST服务器。 我提到了一个例子。这是运行较早,但不再。早些时候,我习惯于导出war文件,然后使用命令行启动tomcat&它起作用了。后来,我在eclipse中添加了服务器并开始直接运行,url工作,然后突然停止工作 我几乎每次都会收到404错误,但昨天在我重新启动服务器和常德一些设置后,url再次工作。不确定我做了什么。今天我打开了eclipse,获得了404增益 我认为tomcat的设置可能有问题。我不熟悉servlet和tomcat web.xmlJava 找不到页面404 Apache Tomcat,java,eclipse,apache,tomcat,servlets,Java,Eclipse,Apache,Tomcat,Servlets,我正在尝试学习使用jersey和servlet创建REST服务器。 我提到了一个例子。这是运行较早,但不再。早些时候,我习惯于导出war文件,然后使用命令行启动tomcat&它起作用了。后来,我在eclipse中添加了服务器并开始直接运行,url工作,然后突然停止工作 我几乎每次都会收到404错误,但昨天在我重新启动服务器和常德一些设置后,url再次工作。不确定我做了什么。今天我打开了eclipse,获得了404增益 我认为tomcat的设置可能有问题。我不熟悉servlet和tomcat we
<?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"
id="WebApp_ID" version="3.0">
<display-name>com.aarfid.restserver</display-name>
<servlet>
<servlet-name>Jersey RESTful Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.aarfid.restserver</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey RESTful Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
试试这个:
<listener>
<listener-class>
org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>
<servlet>
<servlet-name>resteasy-servlet</servlet-name>
<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.aarfid.restserver</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>resteasy-servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
当偶数收到404时
检查你的雄猫。 -已选择端口8080 --转到安装路径或您的Tomcat --文件夹'conf'/fileserver.xml 在那里(大约第70排),你应该可以找到一些
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
检查,上面写的是什么
- 在Eclipse中:如何启动项目? --在项目上:“右键上下文菜单”-->以“在服务器上运行”的方式运行
<servlet-name>Jersey RESTful Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
另一点值得一提的是,Eclipse Dynamic WebProject在默认情况下将指定与项目名称相同的WebContext,除非您明确指定另一个路径(在创建项目期间,或者您可以在项目设置中更改它)
这会将好的url更改为
good url
http://localhost:8080/WebProjectName/rest/author/34
另一个问题是缓存服务器的配置,因为eclipse为Tomcat Catalina服务器提供了单独的文件夹。在这种情况下,清理tomcat服务器(我认为右键单击服务器,应该停止服务器,选择clean)或只是删除并再次创建服务器是有帮助的。当我从Eclipse启动一个servlet在本地主机上的tomcat上运行时,URL中包含项目名称。假设我的项目名为Foo,index.html的URL为。返回404。您是否尝试将项目名称放入URL?启动tomcat时是否可以添加它的日志?此结构指的是maven,而原始消息中显示的结构是基本Eclipse动态Web应用程序项目。@3vge logs added&我的项目不是maven项目可能您必须检查是否为servlet-api.jarthe设置了类路径在server.xmlI中也写入了同样的内容。我删除了服务器,并尝试创建war文件并手动启动tomcat。我现在可以运行它了。但当在eclipse中再次创建服务器时-我再次得到404检查您是否使用相同的url访问rest服务?尝试将localhost替换为127.0.0.1或cpu IP地址,默认情况下Tomcat绑定到cpu上的所有可用接口。最好的做法是在server.xml config fileBTW中显式设置tomcat必须绑定的接口,如果项目的war文件部署到例如Elastic Beanstalk上的tomcat容器中,那么项目名称就不是URL的一部分。
<servlet-name>Jersey RESTful Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
good url
http://localhost:8080/rest/author/34
bad url
http://localhost:8080 not found
http://localhost:8080/author/34 not found
http://localhhost:8080/who-is-that-man not found
good url
http://localhost:8080/WebProjectName/rest/author/34