簡體   English   中英

Rest Service 404錯誤-Jersey / tomcat8

[英]404 error with Rest Service - Jersey/tomcat8

在過去的幾天中,我一直在嘗試使用許多示例,但是我無法使REST服務運行。 我有tomcat8(Ubuntu 14.x)/ Jersey。 任何想法?

pom.xml代碼段

<dependencies>
    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>jsr311-api</artifactId>
        <version>1.1.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.18.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-servlet</artifactId>
        <version>1.18.1</version>
    </dependency>
</dependencies>

web.xml代碼段

 <servlet>
    <servlet-name>RestService</servlet-name>
    <!--servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class-->
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
             <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
<!--param-name>jersey.config.server.provider.packages</param-name-->
        <param-value>mail.service</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>RestService</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>

Tomcat啟動時沒有錯誤:

2015年7月11日11:23:08.327信息[localhost-startStop-8] com.sun.jersey.server.impl.application.WebApplicationImpl._initiate啟動澤西島應用程序,版本“澤西島:1.18.1 02/19/2014 03 :28 AM'2015年7月11日11:23:08.795信息[localhost-startStop-8] org.apache.catalina.startup.HostConfig.deployWAR部署Web應用程序檔案/home/apcuser/tomcat8/apache-tomcat-8.0 .24 / webapps / ExProcess.war已在1,488毫秒內完成

休息服務等級:

package mail.service;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import javax.xml.bind.JAXBElement;

//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;

@Path("restservice")
public class RestService {
        @Context
        UriInfo uriInfo;
        @Context
        Request request;
        String id;

        @GET
        @Path("{name}")
        public String sayHello(@PathParam("name") String name){
            return "Hello " + name;
        }

}

結果:

HTTP狀態404-/ rest / restservice / TestName

更新:我無法弄清楚我的項目有什么問題,只是從頭開始,如下: http : //javabrains.koushik.org/courses/javaee_jaxrs/lessons/Setting-Up現在可以工作了。

@Path("/restservice")
public class RestService {
        @Context
        UriInfo uriInfo;
        @Context
        Request request;
        String id;

        @GET
        @Path("/{name}")
        @Produces(MediaType.TEXT_PLAIN)
        public String sayHello(@PathParam("name") String name){
            return "Hello " + name;
        }

}

http 404是找不到文件錯誤,因為沒有將/附加到@Path注釋值,所以出現此錯誤。

@Path("restservice")應該是@Path("/restservice")@Path("{name}")應該是@Path("/{name}")

編輯更新-

添加了@Produces(MediaType.TEXT_PLAIN)

您嘗試關注

web.xml中的更改

  <servlet-mapping>
    <servlet-name>RestService</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>

並在servlet中

@Path("/rest/restservice/")
public class RestService {
        @Context
        UriInfo uriInfo;
        @Context
        Request request;
        String id;

        @GET
        @Path("/{name}/")
        public String sayHello(@PathParam("name") String name){
            return "Hello " + name;
        }

}

我也看到你評論了代碼。 但是,您是否清除了webapps目錄? 停止tomcat容器->轉到webapps目錄->刪除ExProcess文件夾(不是war)->啟動容器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM