Tôi đã đọc qua một số bài đăng, nhưng dường như không thể giải quyết được vấn đề của tôi. Bạn cũng sẽ thấy hàng tấn bài đăng rất giống với bài đăng này, thậm chí cả cùng một hướng dẫn. Ngay cả sau họ, tôi dường như không thể nhận được câu trả lời.Dịch vụ Web REST REST, Tomcat, Eclipse và 404 của
Về cơ bản, tôi đang cố gắng để làm theo các hướng dẫn đơn giản tại địa chỉ: http://www.vogella.com/articles/REST/
Tôi đã thực hiện một vài thay đổi để làm cho nó tương thích với Jersey 2.x
Tôi đang sử dụng: Eclipse Tomcat 6 (Triển khai/Run as trong Eclipse) jaxrs-ri-2.0 tôi đã kích hoạt JAX-RS Facet trong Eclipse
Tất cả mọi thứ được xây dựng tốt Tomcat khởi động tốt trong Eclipse Tôi có thể lấy đến một nội dung trang tĩnh thông qua:
http://localhost:8080/RestTEST2/index.html
Tuy nhiên, khi tôi cố gắng truy cập vào dịch vụ của tôi qua:
http://localhost:8080/RestTEST2/jaxrs/hello
tôi nhận được một 404 với "Thông điệp không tìm thấy" và "Tài nguyên được yêu cầu (Không tìm thấy) không khả dụng".
Đây là web.xml của tôi mà nằm ở /WebContent/WEB-INF/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_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>TestREST2</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<description>JAX-RS Tools Generated - Do not modify</description>
<servlet-name>JAX-RS Servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>TestREST</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JAX-RS Servlet</servlet-name>
<url-pattern>/jaxrs/*</url-pattern>
</servlet-mapping>
</web-app>
Dưới đây là lớp Java của tôi:
package TestREST;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
// Plain old Java Object it does not extend as class or implements
// an interface
// The class registers its methods for the HTTP GET request using the @GET annotation.
// Using the @Produces annotation, it defines that it can deliver several MIME types,
// text, XML and HTML.
// The browser requests per default the HTML MIME type.
//Sets the path to base URL + /hello
@Path("/hello")
public class Hello {
// This method is called if TEXT_PLAIN is request
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayPlainTextHello() {
return "Hello Jersey";
}
// This method is called if XML is request
@GET
@Produces(MediaType.TEXT_XML)
public String sayXMLHello() {
return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>";
}
// This method is called if HTML is request
@GET
@Produces(MediaType.TEXT_HTML)
public String sayHtmlHello() {
return "<html> " + "<title>" + "Hello Jersey" + "</title>"
+ "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> ";
}
}
Tôi cũng có một JAX- Thư viện người dùng RS được định cấu hình và tham chiếu bao gồm tất cả các lọ JAX-RS.
Suy nghĩ về điều gì sẽ khiến dịch vụ web không được tìm thấy?
ảnh vui nhộn. Tôi đã chiến đấu này hàng giờ liền. Đây là giải pháp cho vấn đề của tôi. Tôi cũng đã có tên gói của tôi mistyped trong xml như testREST, khi nó cần phải có TestREST, nhưng đây là gốc của vấn đề. Cảm ơn một tấn. –
Từ bình luận của bạn, tôi đã học cách thay đổi pkg của nhà cung cấp thành pkg của riêng tôi. Cảm ơn –
Tôi đang cố gắng triển khai cùng một dự án ..... nhưng lỗi tương tự vẫn còn .. Tôi đã thử tất cả các giải pháp được cung cấp ở đây cộng với cố gắng thay đổi vị trí của máy chủ tomcat cũng ... – spt025