[英]404 when accessing Web Service in java using Jersey and Tomcat
[英]404 when accessing Jersey app in Tomcat 7
我是Web開發的新手,我正在努力使用jersey創建一個簡單的rest Web服務,該球衣打包為獨立的war文件,並部署在tomcat 7上。
我已按照本教程進行操作,以創建簡單的Hello World Restful Web服務。 我使用intelij來創建war文件(war文件和它的分解版本)並將它們部署在tomcat \\ webapps文件夾中。
啟動tomcat時,我無法訪問URL( http://localhost:8080/rest/hello
)-獲取404。
查看tomcat的日志,除了下面的幾行,我找不到任何異常或錯誤:
INFO: Scanning for root resource and provider classes in the packages:
sample
εαΘ 30, 2013 11:24:38 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
class sample.Hello
εαΘ 30, 2013 11:24:38 PM com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.
我進行了很多搜索,並嘗試遵循所有針對此錯誤的解決方案,但沒有任何效果。
由於我的新生,我感到自己缺少一些非常基本的東西。 有什么想法要搜索嗎? 我想念什么? 這是一個簡單的hello world應用程序,我非常狂喜,感到沮喪...
Java類
package sample;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("hello")
public class Hello {
// This method is called if TEXT_PLAIN is requested
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayHelloInPlainText() {
return "Hello world!";
}
// This method is called if HTML is requested
@GET
@Produces(MediaType.TEXT_HTML)
public String sayHelloInHtml() {
return "<html> " + "<title>" + "Hello world!" + "</title>"
+ "<body><h1>" + "Hello world!" + "</body></h1>" + "</html> ";
}
}
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"
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_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>rest</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>sample</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
這類似於以下SO問題:“未找到提供程序類:運行Jersey REST示例應用程序時 ”。
消息“未找到提供程序類”很好,無需擔心。 為了使URL http://localhost:8080/rest/hello
起作用,您的WAR文件需要稱為rest.war
。 然后, rest
變為上下文根。 您在項目注釋中定義的所有路徑都相對於上下文root 。
如果您已經在eclipse中調用了項目:請休息,那么您應該得到正確的消息:“ Hello world!” 從tomcat的URL:
http://localhost:8080/rest/hello.
例如,如果您已經調用了您的項目:MyHello,則使用您發布的代碼,正確的URL應該是:
http://localhost:8080/MyHello/hello
(原因是Eclipse默認情況下會創建一個戰爭,稱為項目名稱,並將其發布到您在配置中添加的tomcat服務器中)
讓我知道
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.