Сервер Glassfish с ошибкой 404, по пути, где должна быть найдена страница - PullRequest
0 голосов
/ 24 февраля 2019

Я работаю над веб-приложением, использующим сервер Intellij и Glassfish.Но это показывает ошибку 404, страница не найдена.В частности:

HTTP Status 404 - Not Found

type Status report

messageNot Found

descriptionThe requested resource is not available.

GlassFish Server Open Source Edition 4.1.1

Я не могу понять, почему это происходит.Я делаю это с Gradle.

Сначала я сделал это, используя web.xml, а затем расширив Application, но в обоих случаях результат был одинаковым.

Я пробовал решения по аналогичным вопросамна SO, но ни один из них не работал.

Это код RootResource:

package com.pd.jersey.jaxb;

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

@Path("/")
class RootResource {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello(){
        return "Hello";
    }
}

Это ресурс Todo:

package com.pd.jersey.jaxb;

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

@Path("/todo")
public class TodoResource {
    @GET
    @Produces({MediaType.APPLICATION_XML})
    public Todo getXML() {
        Todo todo = new Todo();
        todo.setSummary("Application XML Todo Summary");
        todo.setDescription("Application XML Todo Description");
        return todo;
    }

    // This method is called if JSON is requested
    @GET
    @Produces({MediaType.APPLICATION_JSON})
    public Todo getJSON() {
        Todo todo = new Todo();
        todo.setSummary("Application JSON Todo Summary");
        todo.setDescription("Application JSON Todo Description");
        return todo;
    }

    // This can be used to test the integration with the browser
    @GET
    @Produces({ MediaType.TEXT_XML })
    public Todo getHTML() {
        Todo todo = new Todo();
        todo.setSummary("XML Todo Summary");
        todo.setDescription("XML Todo Description");
        return todo;
    }
}

Это код приложения:

package com.pd.jersey.jaxb;

import javafx.application.Application;
import javafx.stage.Stage;

import javax.ws.rs.ApplicationPath;
import java.util.HashSet;
import java.util.Set;

@ApplicationPath("/rest")
public class RestApplication extends Application {
    // All request scoped resources and providers
    public Set<Class<?>> getClasses() {
        Set<Class<?>> classes = new HashSet<>();
        classes.add(TodoResource.class);
        return classes;
    }

    // all singleton resources and providers
    public Set<Object> getSingletons() {
        Set<Object> singletons = new HashSet<>();
        return singletons;
    }

    @Override
    public void start(Stage primaryStage) throws Exception {

    }
}

Это скриншот моей конфигурации пробега:

run-configuration

Кажется, я не понимаю, что происходит не так,Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 24 февраля 2019

Вы переопределяете неправильно Application.Тот, который вы используете, предназначен для Java FX, который предназначен для создания графических пользовательских интерфейсов.Вам необходимо продлить javax.ws.rs.core.Application.Вот почему вы должны ВСЕГДА использовать @Override, когда вы переопределяете метод;так что вы знаете, что на самом деле переопределяете метод в классе (то есть getClasses() и getSingletons()).Если бы вы добавили @Override, вы бы увидели, что это не тот метод в Application, который вы используете.

...