Glassfish 服务器在应找到页面的路径上显示错误 404

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

我正在使用 Intellij 和 Glassfish 服务器开发一个 Web 应用程序。但是,它显示错误 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 {

    }
}

这是我的运行配置的屏幕截图:

我似乎没发现哪里出了问题。我将不胜感激任何帮助。

java gradle intellij-idea jersey glassfish
1个回答
2
投票

你推翻了错误的

Application
。您使用的是 JavaFX,它用于制作图形用户界面。您需要延长
javax.ws.rs.core.Application

你的问题说明了为什么你在重写方法时应该始终使用

@Override
;所以你知道你实际上正在重写类中的方法(即
getClasses()
getSingletons()
)。如果您添加了
@Override
,您会发现它不是您正在使用的
Application
类中的方法。

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