Отображение 404 в динамической сети - PullRequest
0 голосов
/ 23 мая 2018

Отображение не найден 404. Путь правильный, я думаю, и никаких ошибок не отображается.Позвольте мне помочь с этим.

.java файл

@Path("/foods")
public class FoodService {

    List<Food> foods;
    ArrayList<Food> foodCart = new ArrayList<>();

    public FoodService() {
        foods = FoodController.getFoodList();
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Food> getFoodList() {
        return foods;
    }

файл web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
 <display-name>Food Service</display-name>

 <servlet>
 <servlet-name>food_service</servlet-name>
 <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
 <init-param>
 <param-name>jersey.config.server.provider.packages</param-name>
 <param-value>foodservice</param-value>
 </init-param>
 <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
 <servlet-name>food_service</servlet-name>
 <url-pattern>/rest/*</url-pattern>
 </servlet-mapping>

 <welcome-file-list>
 <welcome-file></welcome-file>
 </welcome-file-list>

</web-app>

ссылка, которую я пытался получить значение: http://localhost:8080/food_service/rest/foods

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Поскольку вы используете Servlet Spec 3.1, вы используете довольно современную версию Glassfish.В этом случае вы делаете свою жизнь слишком сложной.Я бы порекомендовал либо удалить ваш web.xml, либо изменить его на пустой:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
</web-app>

Затем в любом пакете добавьте приведенный ниже код.Это сообщает контейнеру (Glassfish), что вы запускаете приложение REST, и выполняет функцию, аналогичную url-pattern, которая есть у вас в текущем web.xml:

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;


@ApplicationPath("/rest")
public class RestApplication extends Application {
    // intentionally empty
}

. С этим вы будете вызыватьваш сервис с http://localhost:8080/<webapp name>/rest/foods, где webapp name - это имя вашего веб-приложения.

0 голосов
/ 23 мая 2018

Можете ли вы попытаться заменить значения тега display-name и param-value именем пакета, в котором находится класс FoodService.

Пожалуйста, используйте ссылку в случае путаницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...