Jersey Rest API 404 Not Found

问题描述 投票:0回答:1

我想学习如何在java上做一个rest API,在测试时遇到了一些问题。

当我试图在localhost:8080restServicepruebasame上为localhost:8080restServicevendedores做一个get时,我得到404 not Found。

我尝试了上千种方法来制作URI,这只是我最后尝试的方法。

为了部署api,将java项目打包成一个war,并将.war粘贴到我的tomcat安装的webapps目录下,然后运行tomcat的startup.bat。

这是muy 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_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>restService</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
 <!-- Register resources and providers under com.vogella.jersey.first package. -->
<init-param>
    <param-name>jersey.config.server.provider.packages</param-name>
    <param-value>com.arquimeda.capacitacion</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.jackson.JacksonFeature</param-value>
</init-param>
    <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/restService/*</url-pattern>
</servlet-mapping>
</web-app> 

这是我的依靠

 <dependency>
  <groupId>org.glassfish.jersey.core</groupId>
  <artifactId>jersey-server</artifactId>
  <version>2.30.1</version>
 </dependency>
 <dependency>
  <groupId>org.glassfish.jersey.containers</groupId>
  <artifactId>jersey-container-servlet</artifactId>
  <version>2.30.1</version>
 </dependency>
 <dependency>
  <groupId>org.glassfish.jersey.inject</groupId>
  <artifactId>jersey-hk2</artifactId>
  <version>2.30.1</version>
 </dependency>
 <dependency>
  <groupId>org.glassfish.jersey.media</groupId>
  <artifactId>jersey-media-json-jackson</artifactId>
  <version>2.30.1</version>
 </dependency>
</dependencies>

这是我的代码

package com.arquimeda.capacitacion;

import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;


@Path("/restService")
public class RestService {

    @GET
    @Path("/vendedor/{vend_id}")
    @Produces(MediaType.APPLICATION_JSON)
    public Vendedor  getVendedorPorId(@PathParam("vend_id")int id) throws Exception {
        VendedorDAO vendedorDAO = new VendedorDAO();
        System.out.println("hola");
        return vendedorDAO.getVendedorPorId(id); 
    }

    @GET
    @Path("/vendedores")
    @Produces("application/json ")
    public List<Vendedor>  getVendedores() throws Exception {
        /*VendedorDAO vendedorDAO = new VendedorDAO();
        System.out.println("hola");
        return vendedorDAO.getVendedores(); 
        */
        Vendedor vend1 = new Vendedor(5,"juan",1,null,70);
        Vendedor vend2 = new Vendedor(5,"juan",1,null,70);
        List<Vendedor> lista = new ArrayList<Vendedor>();
        lista.add(vend1);
        lista.add(vend2);
        return lista;
    }

    @GET
    @Path("/prueba")
    @Produces(MediaType.TEXT_PLAIN)
    public String getPrueba(){
        return "hola";
    }
}
java rest api jersey
1个回答
0
投票

试试下面的网址,因为路径也被配置为 休息服务

localhost:8080/restService/restService/vendedores

0
投票

我认为问题的出现是因为你提到servlet类是glassfish而使用了tomcat,请检查一下http:/localhost:8080managertextlist。 你还需要创建一个登录用户,到TOMCAT_HOMEconftomcat-users.xmland中添加,对于glassfish来说,这可能对你有帮助。我应该把.war文件放在glassfish服务器的哪里?

谢谢你

© www.soinside.com 2019 - 2024. All rights reserved.